无法隐藏 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()?的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中如何隐藏 QMenu

如何在 QMenu 中隐藏子菜单

framelesswindowhint 导致 qmenu 无法正常工作

无法使 Qmenu 背景弯曲

framelesswindowhint导致qmenu无法正常工作

如何将 QMenu 中的 QAction 转换为 QWidget?