Seite 1 von 1

Problem mit den Menus

Verfasst: 4. April 2007 12:45
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);
	...
}

Verfasst: 11. April 2007 11:11
von UmmonTL
Hatte noch niemand das gleiche Problem?

Verfasst: 11. April 2007 11:15
von reani
Schon mal als Alternative hide() bzw. show() probiert?

Verfasst: 11. April 2007 12:10
von upsala
Laß halt die Menüs so wie sie sind und deaktiviere nur die QActions...

Verfasst: 12. April 2007 11:10
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.

Verfasst: 12. April 2007 11:17
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.

Verfasst: 12. April 2007 13:01
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. :(