无法隐藏 QMenu 对象 QMenu::setVisible()?
Posted
技术标签:
【中文标题】无法隐藏 QMenu 对象 QMenu::setVisible()?【英文标题】:Not possible to hide a QMenu object QMenu::setVisible()? 【发布时间】:2015-09-03 12:30:33 【问题描述】:我在我的应用程序中的MainWindow
之上建立了一个QMenu MainMenu
。大家都习惯了,我有以下QMenu
主菜单:
文件 - 编辑 - SuperHeavyExpertMenus - 设置 - 帮助
我想在程序启动时隐藏子树SuperHeaverExpertMenus
,因为它包含很多设置,这可能会使初学者用户感到困惑。
我想用SuperHeavyExpertMenu
显示那个子树,例如,当设置中的复选框为真时。
我可以隐藏上面QMenu
的孩子QActions
,与QAction:setVisible(false)
竞争。但我可以为QMenu
做到这一点?
有没有办法隐藏QMenu
?
【问题讨论】:
隐藏Menu action。 @Amartel 我看不到用它隐藏 QMenu 的可能性吗?我对 QActions 不感兴趣。我已经能够隐藏 QActions。但是 QMenu 在主菜单中仍然可见。我想隐藏一个 QMenu。 @RalfWickum 在这种情况下,“动作”一词仅表示“可以进入菜单的东西”。来自 QMenu 描述:“有四种操作项:分隔符、显示子菜单的操作、小部件和执行操作的操作。” SuperHeavyExpertMenus 将是第二个“操作”种。 不是“菜单的操作”。 菜单操作。我发布了一个文档链接。跟着它。 是的,实际上,myMenu->menuAction()->setvisible(false) 解决了我的问题。 【参考方案1】:如果我正确理解了您的问题,您可以解决的方法是这样的:
ui->menuYouWantToHide->menuAction()->setVisible(false);
希望对你有用。
【讨论】:
menuAction.setVisible(False)
在 python pyqt5 中工作。【参考方案2】:
Qmenu 没有setVisible()
或hide()
,但您可以改为更改标题:
ui->MenuYouWantToHide->setTitle("");
这将删除标题,因此构成 GUI 中的按钮的“操作”。
【讨论】:
确实如此:menu->setTitle("") 就像 menu->hide()。然后,当您稍后设置标题时,菜单会显示其中的所有操作。以上是关于无法隐藏 QMenu 对象 QMenu::setVisible()?的主要内容,如果未能解决你的问题,请参考以下文章
framelesswindowhint 导致 qmenu 无法正常工作