Segmentation fault
-
Hi
ich habe folgendes Problem ich habe versucht mein erstes Qt programm zu schreiben:D naja und der gibt mir wenn ich es ausführen will in der shell folgendes aus: Segmentation fault.Hier der Quellcode:
//sendenclass.h #ifndef SENDENCLASS_H #define SENDENCLASS_H #include <QString> #include <QWidget> #include <QPushButton> #include <QObject> #include <QInputDialog> #include <QVBoxLayout> class SendenClass : public QWidget { Q_OBJECT public: SendenClass(QWidget *parent=0); private: QVBoxLayout *layout; QPushButton *send; QInputDialog *box; private slots: void sendText(); }; #endif
//sendenclass.cpp #include "sendenclass.h" SendenClass::SendenClass(QWidget *parent): QWidget(parent) { send = new QPushButton("send"); layout = new QVBoxLayout(this); layout->addWidget(box); layout->addWidget(send); setLayout(layout); connect( send, SIGNAL(clicked()), this, SLOT(sendText()) ); } void SendenClass::sendText() { //noch nicht geschrieben }
//main.cpp #include <QApplication> #include "sendenclass.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); SendenClass* window = new SendenClass; window->show(); return app.exec(); }
ich hab keine ahnung woran das liegen kann halt mein erstes programm hab warscheinlich auch die ein oder andere überflüssige Sache included.
schon ma thx
gruss Irodsps: nutze ubuntu
-
Das Problem liegt an dieser Stelle:
layout->addWidget(box);
Deine Variable box vom Typ QInputDialog zeigt zu dem Zeitpunkt noch auf garkeine sinnvolle Adresse im Speicher, da du noch keinen Speicher allokiert hast.
Das hat dann natürlich einen Laufzeitfehler zur Folge.Außerdem macht es wenig Sinn, eine QInputDialog Variable einem Layout hinzufügen zu wollen.