11
votes

I have built up a QMenu MainMenu on top of my MainWindow in my application. As everybody is used to it, I have following QMenu Main menus:

File - Edit - SuperHeavyExpertMenus - Settings - Help

I would like to hide the sub tree SuperHeaverExpertMenus initially, on program start, because it conatins a lot of settings, which might confuse beginner users.

I want to show that sub tree with SuperHeavyExpertMenu, when a checkbox in Settings is true, for instance.

I can hide the children QActions of the QMenu s above, vie QAction:setVisible(false) . but I can do that for the QMenu ?

Is there a way to hide the QMenu ?

2
Hide Menu action.Amartel
@Amartel I can not see a possiblity to hi hide a QMenu with that? I am not interesetes in the QActions. I am already able to hide the QActions. But the QMenu are still visible in the main menu. I want to hide a QMenu.Ralf Wickum
@RalfWickum In this case the word "action" just means "thing that can go in a menu". From the QMenu description: "There are four kinds of action items: separators, actions that show a submenu, widgets, and actions that perform an action." SuperHeavyExpertMenus would be an "action", of the second kind.HostileFork says dont trust SE
Not "menu's actions". Menu action. I posted a link to a documentation. Follow it.Amartel
Yes, actually, myMenu->menuAction()->setvisible(false) solved my problem.Ralf Wickum

2 Answers

23
votes

If I understood correctly your problem, the way you can solve it is whit something like this:

ui->menuYouWantToHide->menuAction()->setVisible(false);

I hope to be useful.

4
votes

Qmenu doesn't have setVisible(), or hide(), but you can change the title instead:

ui->MenuYouWantToHide->setTitle("");

This will remove the title, and therefore the "Action" that make up the button in your GUI.