Programm beenden in main

Alles rund um die Programmierung mit Qt
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

Nach exec ist das Programm zu Ende.

Code: Alles auswählen

return app.exec();
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

halt nicht. denn dann läuft erst die Event warteschlange.
sh
Beiträge: 3
Registriert: 24. Mai 2005 11:14

Beitrag von sh »

Wenn du zwingend Qt-Funktionen benutzen willst, solltest du nach der Abfrage ein

QTimer::singleShot(60000, &app, SLOT(quit()));

aufrufen (Qt-Doku). Statt der 60000 (60s) kannst du etwas im Bereich 10-100 nehmen - je nachdem, wie lange main() halt noch bis zum Starten der Eventloop braucht.

Meiner Meinung nach nicht 100% elegant, funktioniert.
seneca
Beiträge: 23
Registriert: 6. Januar 2006 09:57

Beitrag von seneca »

Mit app.exec() geht das Programm in eine Schleife zur Eventbearbeitung. Für Konsolenprogramme ohne Interaktion ist das IMHO nicht sehr sinnvoll, schon eher für Dialogprogramme oder Serverprozesse welche auf Input warten und dann diesen verarbeiten, also auf SIGNAL/SLOT mechanismen aufbauen.

Im Übrigen wird mit QCoreApplication::exit(code) das Programm (im Gegensatz zum "normalen" exit) NICHT beendet, d.h. es wird lediglich ein Returncode für app.exec() gesetzt und die Eventschleife beendet, jedoch wird der Programmablauf mit dem nächsten Statement fortgesetzt (Siehe Doku).
Antworten