Qt/Gcc


2.メニュー
 画像を読み込むためにメニューをつけます。
 2-1 mainwindow.hの実装
    mainwindow.hに以下のコードを追加します。

   //Guiのためのincludeファイルの追加
     #include <QtGui>//menu

   //classの宣言
    class QMenu;

     メニューに、「New」アイテムをつけます。このため下記のメンバー変数とメンバー関数をインプリメントします。メンバー関数はmainwindow.cppで実装します。
    「public slots:」以下の関数はQt独自のシグナルースロットの関数となります。これはVisual C++のメッセージを送る関数とメッセージを受ける関数ということになります。

   private:
     //以下追加
     QMenu *fileMenu;//メニューバー追加用。
     QAction *newAct;//Newアイテム追加用。
     void createMenus();//メニューバー作成用のメンバー関数追加用。自分でインプリメント
     void createActions();//Newアイテム作成用のメンバー関数追加用。自分でインプリメント
   public slots://slotsの実装
     void newFile();//スロット関数追加用。自分でインプリメント

  2-2 mainwindow.cppの実装
  次にmainwindow.cppの処理です。初めにメンバー関数の実装をします。

  void MainWindow::createActions()
  {
      newAct= new QAction(tr("&New"),this);//アクションを作成する。名前は「New」とする。
      connect(newAct,SIGNAL(triggered()),this,SLOT(newFile()));//アクションに対してシグナルとスロットを定義する。newFile()がスロット関数となる。
  }
  void MainWindow::createMenus()
  {
      fileMenu = menuBar()->addMenu(tr("&File"));//メニューバーに「File」メニューを追加する
      //上記は右のコードでもよい。QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
      fileMenu->addAction(newAct);//メニューにcreateActions関数で作成したアイテムを追加する。
  }

  上記のメンバー関数の呼び出しは、QMainwindowのコンストラクタで実施します。
  以下をコンストラクタに追加します。

    createActions();//アクションの作成
    createMenus();//メニューの作成

 メニューアイテム「New」が選択されて、signal(message)である、newActが発行されます。
 その受け側のslot関数を実装します。ここでは、

  //newActに対するスロット関数
  void MainWindow::newFile()
  {
   
  }

 ビルドして実行すると以下の結果になります。 

     fig 1

  Signal – slotsが動作しているか、確認のためメッセージボックスを表示させる
  コードを一時的にインプリメントします。後でコメントアウトしてください。

  void MainWindow::newFile()
  {
     QMessageBox::information(0,"title","NewFile");
  }
  実行してFile – Newを選択するとInfomationダイアログが表示されます。

    fig 2 ダイアログ表示


トップページに戻る