1

Qtでメニューを含むプログラムを作成しようとしています。メインクラスはQWidgetから派生しており、QMainWindowを使用して関数menuBar()を使用できることはわかっていますが、QMainWindowでレイアウトを使用することはできません。setMenuBarを使用してウィンドウのレイアウトにQMenuBarを追加しようとしましたが、menuBar()を使用した場合のように表示されず、ドロップダウンメニューにする方法がわかりません。

これはsetMenuBarで追加されたメニューです

これはmenuBar()で追加されたメニューです

4

3 に答える 3

9
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);

上記のコードでは、ウィジェット レイアウトのメニュー バーを使用していました。

于 2015-01-28T05:43:58.133 に答える
2

でレイアウトを使用できますQMainWindow。中央のウィジェットを提供する必要があります。このウィジェット内では、スタンドアロンの QWidget と同じようにレイアウトを使用できます。

QMainWindow(ステータスとツールバー)によって提供される他のものが必要ない場合は、 を作成QMenuBarして適切なレイアウトの上部に配置し、それに を追加するだけでメニューを追加できますQMenu。しかし、OS X や Ubuntu の Unity のように、メニュー バーをウィンドウの外側に配置するウィンドウ マネージャーでこれが機能するかどうかはわかりません。

だからQMainWindow行くべき道であるべきです。centralWidget()メイン ウィンドウ自体ではなく、 にレイアウトを追加してみてください。

于 2012-05-21T14:45:01.343 に答える