[gelöst] Programm beendet nicht

Alles rund um die Programmierung mit Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst] Programm beendet nicht

Beitrag von qtNiko »

hi,

mein Qt-Programm wird nicht immer beendet, obwohl das Hauptfenster verschwindet.
So, wie ich die Doku verstehe, sollte ein Programm folgendermaßen beendet werden:

Klick auf Menue "Beenden" ruft den Slot "close()" auf -- so ist es in meinem Constructor definiert (mit connect(...) ).
Laut Doku sollte nun automatisch eine function "closeEvent(QCloseEvent *event)" aufgerufen werden, die man mit eigenem Code beliebig füllen kann. In meiner "closeEvent()" sind folgende Zeilen enthalten:

Code: Alles auswählen

bool fertig = true;
... Code , der ggf. fertig auf false setzt
if(fertig) 
		event->accept();  // Programm beenden
else 
		event->ignore();	// Programm und Fenster weiterlaufen lassen
Warum wird einmal das Programm beendet und dann wieder nicht?
Zuletzt geändert von qtNiko am 27. Juni 2008 18:59, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Ist das Fenster vllt. nur geschlossen und nicht gelöscht (Stichwort: DeleteOnClose)? Dann existiert es ja noch, und kann evtl. wieder angezeigt werden.
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

tja,
es geht um mein Hauptfenster, und das habe ich standardmäßig erzeugt. Ein WA_DeleteOnClose kommt da nicht vor.
Der Versuch, im Constructor "setAttribute(WA_DeleteOnClose)" einzufügen endet mit der Fehlermeldung "WA_DeleteOnClose was not declared in this scope".
Welches Include-File fehlt denn da?

Hab's gefunden: es muss heißen "setAttribute(Qt::WA_DeleteOnClose)"
Ich hätte mir gewünscht, dass solch ein Verhalten, nämlich Programm beenden bei close(), default ist. Das ist es doch, was man normalerweise braucht. Alles andere sollte extra programmiert werden, na ja . :?

Jetzt hoffe ich, dass sich mein Programm verhält wie gewünscht.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Programm beenden wenn die Fenster gelöscht werden macht es doch auch.
Aber du schließt die Fenster nur, aber löscht sie nicht. Es kann ja auch sein das du die Fenster später wieder öffnen willst, ohne sie neu zu erstellen.

Das ist schon ganz gut so wie es ist und hat seine Richtigkeit.
Antworten