PAGER : トップ /クラス定義2

メニューバーの追加

実行結果

ここでは、前回作成したクラスに、メニューバーを追加する。
結果は第2章と変わらない。

ソース

サンプルの4という名前のフォルダの中に、以下の内容のファイルがある。
main関数に変更点はないので、リンクから削除した。

mainwindow.h
MainWindowクラスの定義である。
mainWindow.cpp
MainWindowクラスの実装である。

解説

メンバ変数の追加(mainwindow.h)

#include<qwidget.h> #include<qmenubar.h> #include<qpopupmenu.h> #include<qapplication.h> class MainWindow : public QWidget{ public: MainWindow(QWidget* parent, const char *name); private: QMenuBar *_menu; QPopupMenu *_filemenu; };

必要なヘッダをincludeし、privateのメンバ変数にQMenuBarとQPopupMenu オブジェクトへのポインタを宣言した。

実装(mainwindow.cpp)

MainWindow::MainWindow(QWidget* parent, const char* name) :QWidget(parent, name){ _menu = new QMenuBar(this, "menubar"); _filemenu = new QPopupMenu(this, "filemenu"); _filemenu->insertItem("&Open"); _filemenu->insertItem("&Save"); _filemenu->insertSeparator(); _filemenu->insertItem("&Quit", qApp, SLOT(quit()), ALT+Key_F4); _menu->insertItem("&File", _filemenu); }

コンストラクタに、メニューを実装するための処理を記述した。
ポインタ型変数のメンバ関数を呼び出すには、"."(ドット)ではなく、 "->"(矢印演算子)を用いる。
その他には、以前の物と変更はない。

Qtプログラミング入門や、 チュートリアルにならって、 メンバ変数はポインタ型で宣言した.
関数にオブジェクトを渡す場合、 ほとんどの場合そのオブジェクトへのポインタを渡すので、最初から ポインタ型で宣言しているのだと思われる。定石と思って差し支えないであろう。

結果

実行結果
実行結果は第2章と変わらない。

PAGER : トップ /メニューバーの追加