Problem mit den Menus

Alles rund um die Programmierung mit Qt
Antworten
UmmonTL
Beiträge: 16
Registriert: 8. März 2007 10:31

Problem mit den Menus

Beitrag von UmmonTL »

Hallo,

ich habe bei meiner Anwendug ein QMainWindow welches beim Start als Konfigurationsbereich dient (man könnte es sich als eine Art Login vorstellen) und erst nachdem die Anfangseinstellungen vorgenommen wurden wechselt das Fenster auf die Hauptseite von einem StackWidget. Zusätzlich sollen dann diverse Menus/Menupunkte eingeblendet werden je nachdem was der Nutzer eingestellt hat. Das funktioniert auch schon soweit, die Menus sind am Anfang größtenteil mit setVisible(false) ausgeblendet.
Wenn sie jedoch wieder eingeblendet werden sollen werden die Menus gleichzeitig alle geöffnet, der Nutzer muss jedes einzeln mit einem Mausklick schliessen. Wodurch kommt das, wie lässt sich es vermeiden?

Viele Grüße, Ummon.

Codeausschnitt:

Code: Alles auswählen

void fMainWindow::switchMenuToStartConfig(){
	//Actions
	aAbort_mControl->setVisible(false);
	aSave_mControl->setVisible(false);
	aLoad_mControl->setVisible(false);
	...
	//Menus
	mSetup->setVisible(false);
	mScans->setVisible(false);
	...
}

void fMainWindow::switchMenuToFullConfig(){
	//Actions
	aAbort_mControl->setVisible(true);
	aSave_mControl->setVisible(true);
	aLoad_mControl->setVisible(true);
	...
	//Menus
	mSetup->setVisible(true);
	mScans->setVisible(true);
	...
}
UmmonTL
Beiträge: 16
Registriert: 8. März 2007 10:31

Beitrag von UmmonTL »

Hatte noch niemand das gleiche Problem?
reani
Beiträge: 24
Registriert: 23. August 2006 23:28

Beitrag von reani »

Schon mal als Alternative hide() bzw. show() probiert?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Laß halt die Menüs so wie sie sind und deaktiviere nur die QActions...
UmmonTL
Beiträge: 16
Registriert: 8. März 2007 10:31

Beitrag von UmmonTL »

Klar könnte ich die Menus alle deaktivieren, aber als Nutzer würde ich mich etwas wundern wenn ich von sechs Menus nur eins anwählen kann und dort auch nur die Hälfte der Unterpunkte. Und wie gesagt werden auch im Laufe des Programms nie alle Menupunkte auswählbar, es ist einfach unschön überall deaktivierte Menupunkte zu haben.

hide() und show() sind in der API nicht zu finden. Auch ein kurzer Test sagt mir nur dass die Methoden nicht bekannt sind. Es würde mich aber auch wundern wenn die etwas anderes machen als setVisible.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

UmmonTL hat geschrieben:hide() und show() sind in der API nicht zu finden. Auch ein kurzer Test sagt mir nur dass die Methoden nicht bekannt sind. Es würde mich aber auch wundern wenn die etwas anderes machen als setVisible.
QMenu erbt von QWidget, hide() und show() sind Methoden von QWidget, ergo auch in QMenu verfügbar.
Setze deine QActions auf visible und ersetz setVisible( true ) durch show() und setVisible( false ) durch hide() bei den menus, ob es klappt.
UmmonTL
Beiträge: 16
Registriert: 8. März 2007 10:31

Beitrag von UmmonTL »

Stimmt, für QMenu gibt es die Methoden hide() und show(), funktionieren leider auch nicht wie gewünscht.
Allerdings hat sich mein Problem jetzt etwas geändert, ich weiß nicht ob ich vorher blind war (wahrscheinlich ist es so) oder was passiert ist aber die Menus lassen sich nicht ausblenden, nur die Unterpunkte. Mit hide() / show() bzw. setVisible(true / false) lassen sich die QMenu's öffnen und schliessen wie es aussieht aber nicht vor dem User verstecken.
D.H. mein ursprüngliches Problem scheint mit den setVisible - Aufrufen auf den Menus zusammenzuhängen, lasse ich diese weg so bleiben die Menus geschlossen. Dafür weiß ich jetzt nicht mehr wie ich diese Menus vor dem Nutzer verstecken kann. :(
Antworten