Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 |

2005-06-30(Thu)

メニューをつくる

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

AllStarMovesAllStarMoves 2005/07/03 00:12 なにかこう、すごーく簡単に書けるようですねーRuby/Qt。でも書き始めるまでが難しいのでしょうね。ちょっとまとまったアプリのソース、期待したますです。(^^ゞ

hakehake 2005/07/03 12:42 部品のクラスとメソッドさえ覚えてしまえばGUI部分はそんなに難しくなさそうな雰囲気ですね。
た・だ・し、そこからアプリ作成までは道のりが長いですよー。まだRuby本体についても勉強中ですので、ひらにご容赦を(^^;

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20050630/p2