2

Linux で C++ と QT4 を使用しています。実行時にメニューバーに項目を追加したいと考えています。メニューバーを含む私のメイン GUI は、QT Designer で設計され、以下のコードの最初の行でセットアップされました。

私のメイン ウィンドウ コンストラクターには、次のテスト コードがあり、正常にコンパイルされます。ただし、プログラムを実行すると、新しいサブメニュー バーとその項目は表示されません。メニューバーを何らかの形で更新するように Qt に指示する必要があると思います。何か案は?

// ユーザー インターフェイスをセットアップします
 m_ui.setupUi(これ);

 QMenu * iObjectsMenu = new QMenu(tr("Objects"), m_ui.menubar); //m_ui.menubar.menu_View->addMenu(tr("Objectz"));
 QAction * menu_testAction = new QAction(tr("Test"), m_ui.menubar);
 iObjectsMenu->addAction(menu_testAction);
4

2 に答える 2

4

あなたがやっている方法では、メニューをどこかに置く必要がありますが、そうしていません。

私はそれを少し違った方法で行います。デザイナーでメニューを作成すると、ui メンバーにポインターがあります。その後、そのメニューを非常に簡単に操作できます。

たとえば、表示/非表示にできるすべてのツールバーとドック ウィンドウを含むメニューが必要でした。QMainWindow::createPopup()独自の外部関数を作成して作成したコードを調べましたconstruct_view_menu(QMainWindow * parent, QMenu * view_menu)。を使用したメイン ウィンドウの初期化中に呼び出されますconstruct_view_menu(this, ui.menu_View)。関数は、そのメニューにさらにメニューとアクションを追加するだけです。menu_View は、デザイナーで作成した単なる空のメニューです。

これが最も簡単な方法であることがわかりましたが、新しいメニューを作成して、メニューバーに追加または挿入することもできます。あなたが無視したのはこの後者のステップです。

于 2010-12-09T19:24:14.230 に答える
0

UIではなくセットアップコードでメニューを生成し、QMenuを指すメンバー変数を保持します(newで割り当てられます)

于 2010-12-09T20:01:06.443 に答える