Du bist neu in der Welt von C++? Dann schau hier herein!
-
nexus
- Beiträge: 75
- Registriert: 14. Oktober 2006 19:24
Beitrag
von nexus »
Hallo,
main Programm sieht folgender maßen aus (dazu kommen noch die ui files die mit dem Designer erstellt wurden)
dialog.h
Code: Alles auswählen
#ifndef DIALOG_H
#define DIALOG_H
#include <QtGui/QWidget>
#include "ui_dialog.h"
class Dialog : public QWidget
{
Q_OBJECT
public:
Dialog(QWidget *parent);
~Dialog();
Ui::EingabeDialog ui;
private slots:
void ok();
private:
};
#endif // DIALOG_H
dialog.cpp
Code: Alles auswählen
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
{
ui.setupUi(this);
connect(ui.okButton, SIGNAL(clicked()), this, SLOT(ok()));
}
void Dialog::ok(){
ui.lineEdit->setText("Ok");
}
Dialog::~Dialog()
{
}
mainwindow.h
Code: Alles auswählen
#ifndef MAINWINDOW_H_
#define MAINWINDOW_H_
#include "ui_mainwindow.h"
#include "dialog.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
private slots:
void cancel();
private:
Ui::MainWindow ui;
Dialog *d;
};
#endif /* MAINWINDOW_H_ */
mainwindow.cpp
Code: Alles auswählen
#include "mainwindow.h"
MainWindow::MainWindow(){
ui.setupUi(this);
Dialog *d = new Dialog(this);
QGridLayout *lay = new QGridLayout();
lay->addWidget(d);
ui.tab1->setLayout(lay);
connect(d->ui.cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
}
void MainWindow::cancel(){
d->ui.lineEdit_2->setText("Cancel");
}
MainWindow::~MainWindow(){
};
Sobald nun jedoch auf den cancelButton geklickt wird stürzt das Programm ab und ich hab keine Ahnung wiso...
Zuletzt geändert von
nexus am 24. Oktober 2008 23:46, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
-
Kontaktdaten:
Beitrag
von Christian81 »
d ist uninitialisiert.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
nexus
- Beiträge: 75
- Registriert: 14. Oktober 2006 19:24
Beitrag
von nexus »
d wird doch initialisiert
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
-
Kontaktdaten:
Beitrag
von Christian81 »
Das d meinte ich ja nicht! Ich meinte das d in MainWindow::cancel()
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
nexus
- Beiträge: 75
- Registriert: 14. Oktober 2006 19:24
Beitrag
von nexus »
das wird doch durch das andere initialisiert ist ja das selbe d oder nicht? das steht ja in der gesamten klasse zur verfügung
edit: hast recht stand grad voll auf dem schlauch
-
gerome69
- Beiträge: 188
- Registriert: 28. April 2006 22:50
- Wohnort: Berlin
-
Kontaktdaten:
Beitrag
von gerome69 »
nexus hat geschrieben:das wird doch durch das andere initialisiert ist ja das selbe d oder nicht? das steht ja in der gesamten klasse zur verfügung
Dann müßte im Konstruktor von MainWindow stehen:
d = new Dialog(this);
Du schreibst dort aber:
Dialog *d = new Dialog(this);
Und dieses d hat nichts mit dem Zeiger "d" in der Klasse zu tun und ist nach dem Beenden des Konstruktor auch wieder weg. Stichwort: "variable scope".
Gruß, Gérôme
-
nexus
- Beiträge: 75
- Registriert: 14. Oktober 2006 19:24
Beitrag
von nexus »
ja genau, dass hatte ich dann auch bemerkt
