ich habe folgendes Problem:
mein Programm läuft hauptsächlich im System Tray, Fenster ist (die meiste Zeit) keines geöffnet. Wenn man das Programm beendet (etwa über das Kontextmenü des System-Tray-Icons) wird ein Eintrag in einer Art Log-Datei geschrieben.
Fährt der Benutzer nun aber den Rechner herunter, schreibt das Programm keinen Eintrag in das Logfile, was es aber tun sollte. Ich habe entsprechenden Code zwar im Destruktor des Hauptfensters (MainForm, ein QMainWindow) stehen, der Code wird aber nicht aufgerufen (warum nicht?).
QSystemTrayIcon kennt kein CloseEvent(), das man überladen könnte.
Und der Versuch, QCoreApplication::aboutToQuit() abzufragen, hat auch nicht geklappt:
Code: Alles auswählen
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(saveToFile()));Code: Alles auswählen
virtual bool MainForm::winEventFilter(MSG* msg, long* result) {
if(msg->message == WM_QUERYENDSESSION) {
*result = 1;
saveToFile();
return true;
}
return false;
};
Stutzig macht mich, dass der Code im Destruktor nicht aufgerufen wird, wenn das System herunterfährt. Sollte der Code nicht in jedem Fall gestartet werden, schließlich muss der Destruktur ja aufgerufen werden, wenn die Instanz dealloziert wird?!
Grüße
wijaa