@bernd59: Du hast recht. Tatsächlich verwirft Qt die Aufforderung der Fensterverwaltung, die Anwendung zu beenden, wenn das Ereignis beim Hauptfenster verworfen wird, und in der Folge glaubt die Sitzungsverwaltung von KDE, dass die Anwendung noch nicht beendet werden darf.
Die einfache Lösung wäre, dass Fenster nicht zu verstecken, sondern tatsächlich zu schließen, und ein neues Fenster zu erzeugen, wenn es wieder angezeigt werden soll. Dazu musst Du lediglich "QApplication.quitOnLastWindowClosed" deaktivieren, damit die Anwendung im Hintergrund weiterläuft. Sofern es nicht unbedingt erforderlich ist, dass das Fenster geöffnet bleibt, wäre das diejenige Lösung, die ich ob ihrer Einfachheit wählen würde.
Die kompliziertere, aber richtige(TM) Lösung wäre, die Anwendung um
Unterstützung für die Sitzungsverwaltung zu erweitern. In Deinem Anwendungsfall beläuft sich das wohl darauf, von "QApplication" abzuleiten, dort "commitData()" zu überschreiben, in dieser Methode ein Flag zu setzen, welches signalisiert, dass die Sitzung beendet wird, dieses Flag in ".closeEvent()" abzufragen, und falls es gesetzt ist, dass Ereignis nicht zu verwerfen, sondern zu akzeptieren. So geht Amarok tatsächlich vor, hat es allerdings einfacher, da KDE diese Logik in KApplication bereits implementiert und "KApplication.sessionSaving()" zur Verfügung stellt, um zu prüfen, ob gerade die Sitzung beendet wird.