Seite 1 von 1

Schließen der GUI eines QDialog melden

Verfasst: 17. Juli 2009 16:00
von Mensch
Hi,

ich habe in einer Applikation eine Spezialisierung eines QMainWindow welches in einer privaten Membervariable einen Pointer auf eine Spezialisierung eines QDialog hält. Über das Menü des QMainWindow kann dann die GUI des QDialog aufgesetzt werden, danach kann der Nutzer aber keinen weiteren dieser Dialoge öffnen. Jetzt hätte ich gerne, dass der Dialog, sobald seine GUI geschlossen wird, ebendieses meldet und man danach wieder einen Dialog öffnen kann. Dazu würde ich dann sobald der Dialog und seine GUI aufgesetzt werden das entsprechende SIGNAL vom Schließen der GUI des Dialogs mit einer Methode (SLOT) in meinem MainWindow verschrauben, so dass wieder ein Dialog geöffnet werden kann. Ich habe es mit dem destroyed() Signal der Spezialisierung der Dialog-Klasse versucht, doch leider klappt das nicht. In der Doku habe ich auch kein anderes passendes Signal gefunden. Weiß evtl jemand welches Signal ich nutzen muss bzw was ich falsch mache oder was man anders machen sollte?

Vielen Dank im Voraus!

Verfasst: 17. Juli 2009 17:45
von DarkWotan
Können wir etwas Quellcode sehen? Speziell wie du das mit dem Signal gemacht hast.

Verfasst: 17. Juli 2009 18:04
von solarix
Über das Menü des QMainWindow kann dann die GUI des QDialog aufgesetzt werden, danach kann der Nutzer aber keinen weiteren dieser Dialoge öffnen.
Falls das so gedacht ist, dass während dem offenen QDialog keine Eingaben im MainView gemacht werden können, kannst du dies auch gratis mit einem modalen QDialog (setModal()) und parent=MainView haben..
Ich habe es mit dem destroyed() Signal der Spezialisierung der Dialog-Klasse versucht
"close()" ist (sinnvollerweise) in Qt eigentlich nur ein "hide()". Das Objekt bleibt weiterhin bestehen. Daher: kein destroyed()... Aber du könntest ja in "void closeEvent (QCloseEvent * event)" problemlos selbst ein Signal werfen.. oder einfach das Verhalten des Dialoges ändern(close=delete.. siehe http://doc.trolltech.com/4.5/qt.html#Wi ... ibute-enum)

hth..

Verfasst: 17. Juli 2009 18:30
von Mensch
Hallo,

vielen Dank für die Hinweise. Was ich jetzt gemacht habe ist nicht das destroyed(), sondern das rejected() Signal des Dialogs zu benutzen. Das funktioniert soweit und scheint auch das richtige zu tun.

Viele Grüße