メニューをつくる
Ruby/Qteの勉強 その11
メニューバーを作ってみる。構成は
- 「ファイル」メニューの下に「ファイル1」「終了」の2項目
- 「表示」メニューの下に「表示1」「表示2」の2項目
を作成。
それぞれのメニューは、QPopupMenuクラスを使用
@filemenu = QPopupMenu.new(self) #ファイルメニュー作成 @filemenu.insertItem(tr("ファイル1"), self, "file1") @filemenu.insertItem(tr("終了"), self, "close()", CTRL+Key_Q)
の用に記述を行う、selfの次の引数はメニューが選択されたときに呼ぶメソッド、その次はショートカットキーの割り当てになる、ショートカットは無くても良い。ここでclos()はウィンドウを閉じる(終了させる)メソッド(だと思う)
メニューバーは、QPEMenuBarクラスを使用して各メニューの登録は
menuBar = QPEMenuBar.new(self) menuBar.insertItem(tr("ファイル(&F)"), @filemenu) menuBar.insertItem(tr("表示(&D)"), @dispmenu)
のようにする。(&F)は[Menu]キーでメニュー表示させた状態でそのキーを押すと、対応するメニューを表示する。
一時的にメニュー項目をマスクさせたい場合は
@fm2 = @filemenu.insertItem(tr("終了"), self, "close()", CTRL+Key_Q) @filemenu.setItemEnabled(@fm2, false)
のようにする。
#!/usr/bin/env ruby require "qte" require "qpe" include Qte include Qpe class SampleWindow < QMainWindow def initialize() super() setCaption(tr("サンプル")) msg = QLabel.new(tr("これはサンプルプログラム"),self) msg.setGeometry(10,20,300,30) @filemenu = QPopupMenu.new(self) #ファイルメニュー作成 @filemenu.insertItem(tr("ファイル1"), self, "file1") @filemenu.insertItem(tr("終了"), self, "close()", CTRL+Key_Q) # 終了をマスクさせたい場合 # @fm2 = @filemenu.insertItem(tr("終了"), self, "close()", CTRL+Key_Q) # @filemenu.setItemEnabled(@fm2, false) @dispmenu = QPopupMenu.new(self) #表示メニュー作成 @dispmenu.insertItem(tr("表示1"), self, "disp1", CTRL+Key_A) @dispmenu.insertItem(tr("表示2"), self, "disp2", CTRL+Key_B) menuBar = QPEMenuBar.new(self) #ファイル,表示をメニューバーに登録 menuBar.insertItem(tr("ファイル(&F)"), @filemenu) menuBar.insertItem(tr("表示(&D)"), @dispmenu) @ebox1 = QMultiLineEdit.new(self) @ebox1.setGeometry(0,280,635,120) end def file1 @ebox1.insertLine(tr("ファイル1が選択されました")) end def disp1 @ebox1.insertLine(tr("表示1が選択されました")) end def disp2 @ebox1.insertLine(tr("表示2が選択されました")) end end $defaultCodec = QTextCodec.codecForName("utf8") app = QPEApplication.new([$0]+ARGV) app.setDefaultCodec($defaultCodec) QApplication.setFont(QFont.new("lcfont",18)) app.showMainWidget(SampleWindow.new) app.exec