0

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 を持っています。

これは、メニュー バーの正しい動作を備えたフォームです。

メニューバーの正しい動作を備えたフォーム

4

1 に答える 1