Qt-Programm beenden (besteht nur aus Dialog)
Verfasst: 19. August 2009 10:46
Hallo,
mir ist nicht ganz klar, wie ein Qt-Programm im Zusammenhang mit modalen bzw. nicht modalen Dialogen beendet wird.
Nach diversen Versuchen konnte ich folgendes Verhalten feststellen:
Beispiel 1: Programm wird nach schließen des Dialogs beendet:
Beispiel 2: Programm wird nach schließen des Dialogs nicht beendet:
Soweit ich das verstehe, wird im ersten Beispiel der nicht modale Dialog erst mittels a.exec() angezeigt. Wieso wird hier Qt::WA_QuitOnClose nicht zum beenden der Applikation benötigt?
Im zweiten Beispiel startet der modale Dialog jedoch eine local event loop, welche vor der loop von a.exec() ausgeführt wird. Ist es richtig, dass die event loop der Applikation "a" erst dann startet, nachdem die des Dialogs abgeschlossen ist (durch schließen des Interfaces)?
Sollte dies der Fall sein, wird dann überhaupt "a.exec()" benötigt, oder wäre ein "return 0;" sinnvoller?
Gruß
DeaD-RaveN
mir ist nicht ganz klar, wie ein Qt-Programm im Zusammenhang mit modalen bzw. nicht modalen Dialogen beendet wird.
Nach diversen Versuchen konnte ich folgendes Verhalten feststellen:
Beispiel 1: Programm wird nach schließen des Dialogs beendet:
Code: Alles auswählen
#include <QApplication>
#include "filedialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
FileDialog w;
w.show();
return a.exec();
}Code: Alles auswählen
#include <QApplication>
#include "filedialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
FileDialog w;
w.exec();
return a.exec();
}Im zweiten Beispiel startet der modale Dialog jedoch eine local event loop, welche vor der loop von a.exec() ausgeführt wird. Ist es richtig, dass die event loop der Applikation "a" erst dann startet, nachdem die des Dialogs abgeschlossen ist (durch schließen des Interfaces)?
Sollte dies der Fall sein, wird dann überhaupt "a.exec()" benötigt, oder wäre ein "return 0;" sinnvoller?
Gruß
DeaD-RaveN