Qt 中如何隐藏 QMenu
Qt: 隐藏菜单QMenu
-----------------------------------------------------------
要点:
说明:Qt 5.14
1. 隐藏某个主菜单
ui->menuXxx->menuAction()->setVisible(false);
注:menuXxx 为用户自己定义的菜单名称。
2. 隐藏整个菜单栏
this->menuBar()->setHidden(true); // ok
注:menuBar() 为 Qt 官方定义的对象名称。
==================================
Qt 中如何隐藏 QMenu
我最近做的一个项目,需要根据 license 授权来控制软件的一些功能。有些菜单在某些状态下要隐藏起来。这么个简单的需求,折腾了半个多小时。
最开始想的很简单,认为就是一句话就能解决。QMenu 继承自 QWidget,QWidget 的显示隐藏很简单。
ui->menu->hide();
结果这么写了后毫无反应。后来研究了一下,需要这么写:
ui->menu->menuAction()->setVisible(false);
为什么?
这里简单说说为啥用 menu->hide() 没反应。其实也不是没反应,而是没有用对地方。一个菜单,平时就是隐藏状态的,我们只有鼠标挪过去它才会显示出来。这时用 hide() 才可以隐藏起来。
原文链接:https://blog.csdn.net/liyuanbhu/article/details/119670533
Qt: 隐藏菜单QMenu
http://www.cppblog.com/biao/archive/2009/09/16/96467.html
在Qt中,直接使用QMenu::hide()是不会隐藏这个菜单的,想要隐藏菜单,因为每个菜单都是与QAction联系起来的,所以使用QMenu::menuAction()->setVisible(false),这样,就可以把这个菜单隐藏起来。
> The menu is represented in the menu bar using a QAction. In order to
> hide the menu "menuTest1" you have to hide its associated action. You
> can access that action using QMenu::menuAction(), like this:
>
> menuTest1->menuAction()->setVisible(false);