Qt关于对菜单栏隐藏的完美解决方案

接触这么久的Qt开发了,感觉Qt自身的库非常的强大,并且在跨平台性上给我带来了太多惊喜。

上次在CSDN论坛看见一个关于Qt开发读写USB的贴子,而且还需要跨平台,有大牛的回复让我很是受益,特这几天正专心学习Qt库呢,以此为背景。

在看到Widget和Menu的时候突然发现,关于Qt菜单栏的隐藏问题有了新的解决方案。

首先需要澄清一点的是,QMenu继承至QWidget,看到这儿的时候很多人都会这样做

menuTest->hide();

可是当你试着编译链接运行后,menuTest是不能隐藏的,问题在哪呢????

我们继续往后看……QMenuBar,相信大家都很熟悉,4.8帮助文档上时这样描述的



看到这里,或许你应该知道些猫腻了,没错,菜单是关联到了QAction上,也就是说想要隐藏菜单,需要对其Action进行操作

//QMenu和QAction的public slots
QMenu::menuAction();
QAction::setVisible(bool);

//具体实现
menuTest->menuAction()->setVisible(false);

通过这样的方式你就能完全隐藏Menu。

关于隐藏之后工作区的格式问题,经我测试,发现在menuTest隐藏后,工作区会重新绘制,菜单栏区域被消除。


你可能感兴趣的:(Qt)