Seite 1 von 1

Frage zu Connect und quit()

Verfasst: 18. Mai 2009 11:25
von tYREL
Hallo,
ich hätte eine Frage und zwar wird in der einschlägigen Litertaur immer
folgendes gemacht, wenn ein Programm über einen Button/Menüpunkt verlassen werden soll

Code: Alles auswählen

QObject::connect(myQuitButton, SIGNAL(clicked()), &myApp, SLOT(quit()));
Ich sollte aber in meiner Anwendung wenn der Quit-Button gedrückt wird noch ein paar Dinge erledigen. Folglich ersetzte ich quit() durch meine eigene Funktion welche dann aufgerufen wird! Aber was dann????
Wir verlasse ich den nun das Programm.

Verfasst: 18. Mai 2009 11:28
von AuE
Überschreiben der on_close methode.....

Verfasst: 18. Mai 2009 11:44
von tYREL
Hab leider keine Ahnung wie ich das machen muß. Ich habe mal im QTAssistent nach on_close gesucht, da komt nix. Auch google hilft mir nicht wirklich.
Ich könnte es allerdings alternativ auch im Destruktor machen. Die Frage ist nur was ist besser und eleganter. Ich muß noch eine XML-Datei speichern. Das ist im Prinzip alles.

Verfasst: 18. Mai 2009 11:56
von AuE
Sr mein Fehler....

Code: Alles auswählen

	 void closeEvent(QCloseEvent *event); // to react on close events

http://doc.qtsoftware.com/4.5/qwidget.html#closeEvent

Verfasst: 18. Mai 2009 12:06
von tYREL
Super. Jetzt ist es klar. Vielen Dank. Dann experimentiere ich damit mal etwas rum :wink:

Verfasst: 18. Mai 2009 21:25
von franzf
Aufräumen und sonstige Finalisierungsarbeiten - dazu zähle ich auch Dateien speichern - gehört in den Destruktor. Wenn du deinem Programm später mal ein Tray-Icon gönnst, willst du im closeEvent() verhindern, dass das Programm beendet wird, und es nur in den Tray minimieren.
Wenn dann noch immer jedesmal die Datei neu geschrieben wird, gibts vllt. Probleme. Angenommen die Daten werden in nem eigenen Thread berechnet, und gerade läuft so eine und ist noch nicht fertig, dann kommt das closeEvent() samt Datei schreiben. Chaos pur wird entstehen, wenn da 1) der Thread abgebrochen wird (+ evtl. Reset) um die Daten konsistent zu halten oder 2) die Daten nicht passen, da der Thread noch mitten im Rechnen ist.

Grüße
Franz

Verfasst: 18. Mai 2009 21:51
von tYREL
betrechtigtes Argument. Ich hab jetzt mal das ganze Zeugs in den Destruktur gelegt. Werde aber trotzdem noch etwas mit dem closeEvent rumprobieren. Vielleicht kann ich das mal für was anderes brauchen. Vielen Dank an Euch für die Hilfe :D