Speicherzugriffsfehler bei QString txt = lineEdit1->text();



  • Wenn ich in meinem Programm einen Button drücke, soll der in lineEdit1 eingebene Text weiterverarbeitet werden.
    Will ich etz aber den Text aus lineEdit1 in txt speichern, wird das Programm mit Speicherzugriffsfehler beendet.

    QString txt = lineEdit1->text();
    

  • Mod

    Wie wärs mal mit ein wenig mehr Code?
    Wahrscheinlich hast du keinen gültigen Pointer auf das Textfeld.



  • Form1.h:

    #include <QtGui>
    
    class Form1 : public QMainWindow {
            Q_OBJECT
    
            public:
                    Form1();
                    QLineEdit *lineEdit1;
                    QPushButton *pushButton3;
    
            public slots:
                    void pushButton3_clicked();
    };
    

    Form1.cpp:

    #include <QtGui>
    
    Form1::Form1() : QMainWindow() {
    
            QLineEdit *lineEdit1 = new QLineEdit(this);
            lineEdit1->setGeometry(20, 70, 241, 23);
    
            QPushButton *pushButton3 = new QPushButton(this);
            pushButton3->setGeometry(270, 65, 100, 30);
            pushButton3->setText("&Senden");
    
            connect(pushButton3, SIGNAL(clicked(void)), this, SLOT(pushButton3_clicked(void)));
    }
    
    void Form1::pushButton3_clicked() {
    
            QString txt = lineEdit1->text();
    
    }
    

  • Mod

    Du legst dir da lokale Variablen im Konstruktor an:

    #include <QtGui>
    
    Form1::Form1() : QMainWindow() {
    
    // hier ist dein Fehler: mit "QLineEdit *lineEdit1" legst du eine lokale Variable an.
    //        QLineEdit *lineEdit1 = new QLineEdit(this);
    // einfach das QLineEdit weglassen, da ja es eh schon Membervariable ist:
            lineEdit1 = new QLineEdit(this);
            lineEdit1->setGeometry(20, 70, 241, 23);
    // dass selbe für QPushButton
            pushButton3 = new QPushButton(this);
            pushButton3->setGeometry(270, 65, 100, 30);
            pushButton3->setText("&Senden");
    
            connect(pushButton3, SIGNAL(clicked(void)), this, SLOT(pushButton3_clicked(void)));
    }
    
    void Form1::pushButton3_clicked() {
    
            QString txt = lineEdit1->text();
    
    }
    


  • Ja, des wars.

    Danke


Anmelden zum Antworten