Frage zu Connect und quit()

Alles rund um die Programmierung mit Qt
Antworten
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Frage zu Connect und quit()

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Überschreiben der on_close methode.....
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag von tYREL »

Super. Jetzt ist es klar. Vielen Dank. Dann experimentiere ich damit mal etwas rum :wink:
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag 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
Antworten