我正在尝试在Qt中创建一个包含菜单的程序。主类派生自QWidget,我知道可以使用QMainWindow来使用menuBar()函数,但是我无法在QMainWindow中使用布局。我尝试使用setMenuBar在窗口布局中添加QMenuBar,但它不像使用menuBar()那样显示,并且我不知道如何将其制作成下拉菜单。
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);
在上面的代码中,我使用了小部件布局的菜单栏。
QMainWindow
中使用布局。 您需要提供一个中央小部件。 在此小部件内,您可以像在独立的QWidget中一样使用布局。QMainWindow
提供的其他内容(状态和工具栏),则只需创建QMenuBar
并将其放置在适当布局的顶部,然后向其中添加QMenu
即可添加菜单。 但我不知道这是否适用于窗口管理器将菜单栏放在窗口之外的情况,例如OS X和Ubuntu中的Unity。QMainWindow
应该是最好的选择。 尝试将您的布局添加到centralWidget()
,而不是添加到主窗口本身。我找到了一份详细的教程,解释了如何完成这个过程:Qt QWidget 添加菜单栏
QMainWindow
中使用布局。只需创建一个空白窗口部件,将其设置为主窗口的中心窗口部件并将布局分配给此窗口部件即可。这样应该可以正常工作。 - undefinedQLayout::setMenuBar()
似乎有效。展示你尝试过的代码。 - undefined