我不明白是什么导致了 QMenuBar 的这种奇怪行为:
当我在头文件(dialog.h)中声明时,菜单栏不显示:
#include <QMenuBar>
#include <QMenu>
...
private:
QMenuBar* bar;
QMenu* file;
...
在构造函数的源文件中:
...
QVBoxLayout* mainLayout = new QVBoxLayout;
bar = new QMenuBar(this);
file = new QMenu("File");
bar->addMenu(file);
mainLayout->addWidget(bar);
this->setLayout(mainLayout);
...
如果我直接在构造函数中创建一个菜单栏(不在头文件中声明它),一切正常并且菜单栏出现在表单上:
...
QMenuBar * b = new QMenuBar(this);
QMenu * m = new QMenu("File1");
b->addMenu(m);
mainLayout->addWidget(b);
this->setLayout(mainLayout);
...
在 Windows 上我没有遇到这样的问题。此行为仅在 Linux 上。
我做错了什么?有什么我误解的吗?
我有 Qt 4.8.3 和 gcc vesion 4.4.7 。
这是一个具有正确菜单栏行为的表单: