メニューバーの作り方
メニューを作成
QMenuクラスによりメニューバーにメニューを作ります。ここではmakeMenu()内に以下の内容を追加してメニューを作成しました。
makeMenu関数内void MainWin::makeMenu() { //メニューのタイトル QString title1 = QString::fromLocal8Bit("ファイル"); QString title2 = QString::fromLocal8Bit("ヘルプ"); QMenu* menu1 = QMenu(title1, this); QMenu* menu2 = QMenu(title2, this) //メニューバーにメニュー追加 menuBar()->addMenu(menu1); menuBar()->addMenu(menu2); }
このように初めにQMenuのオブジェクトを作り、それをaddMenu関数でメニューバーに追加しています。QMenuクラスのコンストラクタの作り方はラベルを作った時と同様です。
このプログラムを実行すると、「ファイル」と「ヘルプ」が表示された2つのメニューがウインドウに追加されます。
プルダウンメニューを作り方
一般にメニューバーのメニューを押した場合、そのメニューの下にぶら下がるようにプルダウンメニューが出てくるのが普通です。そのようなプルダウンメニューを作るにはメニューの中にメニューまたは項目を追加します。メニューはその下にさらに子メニューを持ちますが、項目は文字列のみを持ちそこで終わりっています。
プルダウンメニューを作るためにmakeMenu関数をさらに以下のように改造しました。
makeMenu関数void MainWin::makeMenu() { QString title1 = QString::fromLocal8Bit("ファイル"); QString title2 = QString::fromLocal8Bit("ヘルプ"); //親メニュー QMenu* menu1 = new QMenu(title1, this); QMenu* menu2 = new QMenu(title2, this); //子メニューの作成 QMenu* m1_open = new QMenu(QString::fromLocal8Bit("開く")); //親メニューに子メニューの追加 menu1->addMenu(m1_open); //親メニューに項目の追加 menu1->addAction(QString::fromLocal8Bit("終了")); menu2->addAction(QString::fromLocal8Bit("ヘルプ")); menuBar()->addMenu(menu1); menuBar()->addMenu(menu2); }
このソースファイルでは menu1 に「開く」と「閉じる」のタイトルのついたメニューと項目、menu2には「ヘルプ」のタイトルのついた項目を追加しました。
メニューを追加する際は親メニューのaddMenu関数を使って子メニューを追加し、項目を追加するときはaddAction関数を使います。それらの関数は以下の書式を持ちます
- QMenu* addMenu(QMenu* menu)
メニューバーもこの関数を持っており、ある親メニューに子メニューを追加します。子メニューの中にさらにメニューを追加して入れ子構造にすることも可能です。
- QAction* addAction(const QString & text)
メニューに text という名前を持つ項目を作る役割をもっています。
© Kaz