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 バージョン 4.4.7 を持っています。
これは、メニュー バーの正しい動作を備えたフォームです。