quit() wird nicht ausgeführt

Alles rund um die Programmierung mit Qt
Antworten
Hans_Wurst
Beiträge: 36
Registriert: 8. Mai 2008 16:44

quit() wird nicht ausgeführt

Beitrag von Hans_Wurst »

Hallo,

ich habe nachfolgenden Code geschrieben, welcher einfach nur ein Fenster mit einem Quit-Button anzeigt. Eigentlich sollte es beim clicken des Buttons das Fenster geschlossen werden, was es jedoch nicht tut.

Code: Alles auswählen

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton *button = new QPushButton("Quit");
    QObject::connect(button, SIGNAL(clicked), &app, SLOT(quit()));
    button->show();

    return app.exec();
}
Kann mir jemand sagen woran es liegt? Muss ich eventuell noch irgend welche Bibliotheken bekannt geben oder ist mein Code falsch?

(Falls die Info nützlich ist: ich verwende Eclipse)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Code: Alles auswählen

QObject::connect(button, SIGNAL(clicked), &app, SLOT(quit())); 
QObject::connect() bringt hier unter Garantie false zurück.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hans_Wurst
Beiträge: 36
Registriert: 8. Mai 2008 16:44

Beitrag von Hans_Wurst »

Sorry für meine Unwissenheit, das hier ist gerade erst mein zweites Programm in Qt.

Was meist du damit, dass es garantiert FALSE liefert? Meinst es wird immer geliefert? Oder nur wenn ich auf Quit clicke (wäre FALSE dann etwa der erwartete Wert)?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Schau dir einfach nochmal an wie Du dein Signal genannt hast (nämlich falsch). Der Slot hingegen ist korrekt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hans_Wurst
Beiträge: 36
Registriert: 8. Mai 2008 16:44

Beitrag von Hans_Wurst »

Ahh... ich habe "()" bei clicked vergessen. Danke dir für die schnelle Hilfe.
Hans_Wurst
Beiträge: 36
Registriert: 8. Mai 2008 16:44

Beitrag von Hans_Wurst »

Aber irgendwie frage ich mich im nachhinein, warum hat mir der Compiler dann keine Fehlermeldung gegeben, als ich clicked anstatt clicked() geschrieben habe?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Weil dem Compiler total egal ist was für ein String er an die connect-Funktion übergibt.

http://doc.trolltech.com/4.4/qobject.html#connect

Während der Laufzeit wird aber auf der Konsole eine Warnung ausgegeben (sofern man sie unter Windows aktiviert hat)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten