我正在尝试在Qt中创建一个包含菜单的程序。主类派生自QWidget,我知道我可以使用QMainWindow来使用函数menuBar(),但我不能在QMainWindow中使用布局。我尝试使用setMenuBar在窗口的布局中添加QMenuBar,但它不会像使用menuBar()那样显示,我不知道如何将其设置为下拉菜单。
答案 0 :(得分:6)
QVBoxLayout *boxLayout = new QVBoxLayout(this); // Main layout of widget
QMenuBar* menuBar = new QMenuBar();
QMenu *fileMenu = new QMenu("File");
menuBar->addMenu(fileMenu);
fileMenu->addAction("Save");
fileMenu->addAction("Exit");
this->layout()->setMenuBar(menuBar);
在上面的代码中我使用了widget布局的菜单栏。
答案 1 :(得分:2)
您可以在QMainWindow
中使用布局。您需要提供一个中央窗口小部件。在这个小部件中,您可以像在独立的QWidget中一样使用布局。
如果您不需要QMainWindow
提供的其他内容(状态和工具栏),您只需创建QMenuBar
并将其放在合适布局的顶部即可添加菜单,然后为其添加QMenu
。但我不知道这是否适用于窗口管理器将菜单栏放在窗口外,如Ubuntu中的OS X和Unity。
所以QMainWindow
应该是要走的路。尝试将您的布局添加到centralWidget()
,而不是添加到主窗口本身。
答案 2 :(得分:1)
您需要创建一个 QMenuBar 对象并将其添加到您的布局中。然后调用 addMenu 功能将菜单添加到菜单栏。添加菜单后,您可以调用 addAction 功能添加菜单项并连接其触发信号以处理用户点击。
我找到了一个详细的教程,解释了如何执行此操作:Qt QWidget add menu bar