Top > Ruby > Qte > QMainWindow
  • まずはウィンドウを表示してみましょう
  • ソースコードは utf-8 前提です。
  • 動作確認環境 : Ruby 1.8.4 + rubyqte 0.5.3

最もシンプルな GUI スクリプト

 Ruby と Ruby/Qte の ipk ファイルさえ入っていれば、下記のスクリプトでのっぺらぼうなウィンドウを表示できます。

  • ソースコード
    • qte / qpe は GUI ライブラリ、app は GUI アプリ本体、 win はウィンドウそのもの、くらいのイメージでいいかと思われます。
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
      
      #!/usr/bin/env ruby
      require 'qte'
      require 'qpe'
       
      include Qte
      include Qpe
       
      app = QPEApplication.new([$0]+ARGV)
      win = QMainWindow.new()
      app.showMainWidget(win)
      app.exec
  • 実行結果
    QMainWindow.jpg

ウィンドウのタイトルを変更する

setCaption を呼べば変更できます。

  • ソースコード (2)
    • 英語の場合は何も考えずにsetCaptionするだけです。
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
      
      #!/usr/bin/env ruby
      require 'qte'
      require 'qpe'
       
      include Qte
      include Qpe
       
      app = QPEApplication.new([$0]+ARGV)
      win = QMainWindow.new()
      win.setCaption("(2) Hello,world!")  # 追加!
      app.showMainWidget(win)
      app.exec
  • ソースコード (3)
    • 日本語の場合は、ソースコードの文字コードがなんであれ、そのままsetCaptionすると化けます。
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
      
      #!/usr/bin/env ruby
      require 'qte'
      require 'qpe'
       
      include Qte
      include Qpe
       
      app = QPEApplication.new([$0]+ARGV)
      win = QMainWindow.new();
      win.setCaption("(3) はろー、わーるど!")  # 日本語に変更 (化けます)
      app.showMainWidget(win)
      app.exec
  • ソースコード (4)
    • setDefaultCodec で文字コードを指定して、setCaption(tr("日本語のメッセージ")) とするのが正しいです。
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
      
      #!/usr/bin/env ruby
      require 'qte'
      require 'qpe'
       
      include Qte
      include Qpe
       
      app = QPEApplication.new([$0]+ARGV)
      app.setDefaultCodec(QTextCodec::codecForName("utf-8")) #日本語対応 A
      win = QMainWindow.new()
      win.setCaption(tr("(4) はろー、わーるど!"))               # 日本語対応 B
      app.showMainWidget(win)
      app.exec
  • 実行結果 (ウィンドウタイトル部分3種類のみ抜粋)
    setCaption.jpg

クラスにする

今までクラスを使わずに書いてきましたが、このままでいくとボタンやラベルなどのコントロールを貼り付けて、イベント発生時に多数の何かをさせようとする場合に困ります。そんなわけで、QMainWindow から派生した独自クラスにウィンドウ絡みを閉じこめてしまいましょう。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
#!/usr/bin/env ruby
require 'qte'
require 'qpe'
 
include Qte
include Qpe
 
class MainWindow < QMainWindow
  def initialize
    super
    self.setCaption(tr("(5) はろー、わーるど!"))
  end
end
 
class MyApplication < QPEApplication
  def initialize
    super([$0]+ARGV)
    self.setDefaultCodec(QTextCodec::codecForName("utf-8"))
  end
end
 
app = MyApplication.new
win = MainWindow.new()
app.showMainWidget(win)
app.exec

標準ランチャーに登録する

 せっかくの GUI なので、端末ウィンドウを使わずに Zaurus 標準のランチャーから起動できるようにしましょう。ランチャーに登録することにより、以下のメリットも生まれます。

  • 解像度が勝手に切り替わる問題を防げる
    • KeyHelperでタスク切り替えすると、Ruby/Qte ソフトに戻ってきたときに縦 QVGA になってしまいますが、ランチャーに解像度情報込みで情報登録することによって、そのような現象を防げます。
  • タスクバーやKeyHelperでのタスク切り替えが容易になる
    • アイコンを登録することにより、KeyHelper 無しでアイコンのタップだけでタスク切り替えが可能になります。

まずは、Ruby/Qte なスクリプトの場所を決めてしまいましょう。ここでは、暫定で /home/zaurus/Documents/ 直下をスクリプト置き場と想定します。

次に、スクリプトファイル名を決めうちします。ここでは rubyqte.rb と想定します。

つまり、/home/zaurus/Documents/rubyqte.rb をランチャーに登録すればいい、ということになります。

さて、登録手順ですが、まずは rubyqte.rb と同じディレクトリ上に rubyqte.desktop というファイルを作成します。内容は、以下の通りにします (注意点としては、書き換えで日本語も含める場合は rubyqte.desktop を UTF-8 で保存する必要があること、くらいですね)

[Desktop Entry]
Exec=rubyqte.rb
Icon=tux
Type=Application
Name=Ruby/Qte Study
Display=640x480/144dpi,480x640/144dpi

rubyqte.desktop ファイルの保存ができたら、これらをランチャーが利用するディレクトリ上にリンク作成します。リンク作成は root 権限で行います。

# ln -s /home/zaurus/Documents/rubyqte.rb /home/QtPalmtop/bin/
# ln -s /home/zaurus/Documents/rubyqte.desktop /home/QtPalmtop/apps/Applications/

以上の手続きが終わったら、以下のいずれかを実行してください。

  • 「$ qcop QPE/System 'linkChanged(QString)'」($ は入力不要) でランチャーを最新情報に更新してやる
  • ランチャーの「設定」タブにある「ホーム画面設定」を起動して、すぐに OK ボタンで設定保存して閉じる
  • Zaurus を再起動する

これで、rubyqte.rb はランチャーからいつでも呼べるようになりました。 あとは端末ウィンドウを使わずに ZEditor で rubyqte.rb を編集し、ランチャーから「Ruby/Qte Study」を選択・実行して、閉じてから rubyqte.rb を再編集し...のパターンになっていくと思います。

以下は参考用の画像です。

  • ランチャー登録前 (端末ウィンドウ上からスクリプトを直接実行)
    Zaurus_GUI_Before.png
  • ランチャー登録後 (ランチャーから直接実行)
    Zaurus_GUI_After.png

添付ファイル: fileZaurus_GUI_Before.png 712件 [詳細] filesetCaption.jpg 692件 [詳細] fileZaurus_GUI_After.png 720件 [詳細] fileQMainWindow.jpg 864件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:57:55 JST (1525d)