Not possible to hide a QMenu object QMenu::setVisible()?
Asked Answered
S

3

13

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 ?

Salep answered 3/9, 2015 at 12:30 Comment(5)
Hide Menu action.Confine
@Confine 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.Salep
@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.Nafis
Not "menu's actions". Menu action. I posted a link to a documentation. Follow it.Confine
Yes, actually, myMenu->menuAction()->setvisible(false) solved my problem.Salep
D
28

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.

Deiform answered 6/4, 2016 at 20:54 Comment(1)
menuAction.setVisible(False) works in python pyqt5.Locarno
E
3

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.

Endodontics answered 15/3, 2019 at 10:39 Comment(2)
Indeed when you do: menu->setTitle("") it's like menu->hide(). Then when you set a title later the menu is displayed with all actions within.Procuration
@Procuration only difference that it is still "visible", which may affect some logic relying on it. Note, that it wouldn't disable shortcut key associated with same action.Amie
A
0

Visibility and enable-ity of QAction-based widgets can be controlled via QAction object connected with them.

Qt documentation, even latest versions omit multiple accessor functions from list of public ones. Instead they are referenced under relevant getters, e.g. QAction::setVisible is listed under QAction::isVisible topic.

Amie answered 4/5, 2022 at 13:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.