Schließen der GUI eines QDialog melden

Alles rund um die Programmierung mit Qt
Antworten
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Schließen der GUI eines QDialog melden

Beitrag 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!
DarkWotan
Beiträge: 65
Registriert: 18. Mai 2006 10:03

Beitrag von DarkWotan »

Können wir etwas Quellcode sehen? Speziell wie du das mit dem Signal gemacht hast.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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..
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

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