[gelöst] Signal-connect mit mehreren Klassen
Verfasst: 23. August 2006 23:59
Hallo,
Wie schon viele vor mir bin ich auch ein Newbie. Hab das Forum nach meinem Problem durchsuchen, aber nie wirklich das gefunden, das ich brauche (oder nicht verstanden).
Bei meinem Problem geht es um Signale zwischen verschiedenen Klassen.
Dann die Klasse Main, in der ich eine weiteres Objekt der Klasse GUI instanziere:
In dieser Klasse GUI hab ich jetzt einen Button mit dem ich die ganze Anwendung schließen möchte.
Ich zitiere aus einem Buch:
->Machts aber nicht, weil qApp in der Klasse nicht kennt (first use this function)
Wenn ich "this" beim connect einfüge, dann tut sich gar nix -> schätze mal, weil sich das this auf das aktuelle Widget bezieht.
Was muss ich da beim connect vom quitButton angeben? oder muss ich da was mit parents basteln?
Wie schon viele vor mir bin ich auch ein Newbie. Hab das Forum nach meinem Problem durchsuchen, aber nie wirklich das gefunden, das ich brauche (oder nicht verstanden).
Bei meinem Problem geht es um Signale zwischen verschiedenen Klassen.
Code: Alles auswählen
Also meine "Startklasse" wo ich die eine Instanz der QApplication-Klasse erstelle.
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Main *w = new Main;
w->showMaximized();
w->show();
return app.exec();
}
Code: Alles auswählen
class Main: public QMainWindow
{
Q_OBJECT
public:
//constructor
Main();
private:
//objects
QWidget *mainWidget;
};
Main::Main() {
GUI *gui = new GUI;
mainWidget = gui->getWidget();
setCentralWidget(mainWidget);
}
Code: Alles auswählen
class GUI : public QWidget
{
Q_OBJECT
public:
GUI();
QWidget *getWidget();
private:
QWidget *myWidget;
QPushButton *quitButton;
};
GUI::GUI()
{
QWidget *myWidget = new QWidget;
quitButton = new QPushButton(tr("Quit"), myWidget);
connect(quitButton, SIGNAL(clicked()), this , SLOT(close()));
}
QWidget *MenuGUI::getWidget() {
return myWidget;
}
Daraufhin dachte ich mir, dass ich im "connect" des Buttons nur &qApp angeben muss und mein Programm wird beendet, weil der Pointer ja global ist.The global variable qApp is declared in qapplicaltion.h and it is guaranteed to hold a pointer to the only object of the class qapplication. You can always use it to refer to your application object.
->Machts aber nicht, weil qApp in der Klasse nicht kennt (first use this function)
Wenn ich "this" beim connect einfüge, dann tut sich gar nix -> schätze mal, weil sich das this auf das aktuelle Widget bezieht.
Was muss ich da beim connect vom quitButton angeben? oder muss ich da was mit parents basteln?