Yamamoto's Laboratory
 
Version 3
menu/tool bar
 
Version 4
 
 
コンピューターQt→ メニューとツールバー

Qt メニューとツールバー

目次

  1. はじめに
  2. QMainWindowについて
  3. アクションの設定
  4. メニューバーの設定
  5. ツールバーの設定
  6. プログラム

はじめに

私たちが使っているアプリケーションの多くは,メニューとツールバーが備わっていることが普通である.Qtでは,簡単にこのメニューやツールバーを設定できるようになっている.ここでは,簡単なテキストエディタの作成を例として,メニューとツールバーの設定のしかたを説明していく.ただし,ファイルの保存や読み出しなど,実際の機能の実装まではせずにサンプルプログラムを作っていく.

ここでのサンプルプログラムは「Qt GUIプログラミング」を参考にしている.

QMainWindowについて

メニューバーやツールバーをおくためには,QMainWindowを使う.つまり,このQMainWindowのサブクラスとしてテキストエディタのクラスを造ればよい.QMainWindowの構成は下の図のようになっていて,それぞれの場所にメニューやアイコンなどを設定していく.

menuBar()にはメニューが入る.実際にはQPopupMenuをmenuBar()に追加していくことで,これを実現する.また,QPopupMenuからはQActionを呼び出す.同じように,topDock()にはQToolBarを追加し,QActionを呼び出すようにする.

アクションの設定

メニューバーやツールバーにはQActionを設定する。したがって、その前にQActionを作っておかなくてはならない。たとえば、Newという機能を作る場合、クラスのメンバーに

  QAction *newAct;

というようにQActionポインタを持たせて、コンストラクタで、

  newAct = new QAction(tr("&New"), tr("Ctrl+N"), this);
  newAct->setIconSet(QPixmap::fromMimeSource("new.png"));
  newAct->setStatusTip(tr("Create a new text file"));
  connect(newAct, SIGNAL(activated()), this, SLOT(newFile()));

とする。

メニューバーの設定

メニューバーにはFileとEditの二つのメニューを設定するので、クラスのめんばーに

  QPopupMenu *fileMenu;
  QPopupMenu *editMenu;

を加えておき、コンストラクタでファイルメニューにアクションを

  fileMenu = new QPopupMenu(this);
  newAct->addTo(fileMenu);
  openAct->addTo(fileMenu);
  saveAct->addTo(fileMenu);
  saveAsAct->addTo(fileMenu);
  fileMenu->insertSeparator(); //区切りを入れる
  exitAct->addTo(fileMenu);

と設定する。同じようにエディットメニューなども設定する。そして最後に

  menuBar()->insertItem(tr("&File"), fileMenu);
  menuBar()->insertItem(tr("&Edit"), editMenu);

としてメニューバーにFileとEditを追加する。

ツールバーの設定

ツールバーの設定もメニューバーの設定とほとんど同じで、クラスのめんばーに

  QToolBar *fileToolBar;
  QToolBar *editToolBar;

を持っておき、コンストラクタで

  fileToolBar = new QToolBar(tr("File"), this);
  newAct->addTo(fileToolBar);
  openAct->addTo(fileToolBar);
  saveAct->addTo(fileToolBar);

とする。

プログラム

作成したプログラムを以下に示す.

texteditor.cpp

texteditor.h

main.cpp

できあがったアプリケーションは以下の図ようになる.



no counter