- まずはウィンドウを表示してみましょう
- ソースコードは 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
| | require 'qte'
require 'qpe'
include Qte
include Qpe
app = QPEApplication.new([$0]+ARGV)
win = QMainWindow.new()
app.showMainWidget(win)
app.exec
|
- 実行結果
ウィンドウのタイトルを変更する
setCaption を呼べば変更できます。
- ソースコード (2)
- 英語の場合は何も考えずにsetCaptionするだけです。
0
1
2
3
4
5
6
7
8
9
10
11
| | 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
| | 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
| | require 'qte'
require 'qpe'
include Qte
include Qpe
app = QPEApplication.new([$0]+ARGV)
app.setDefaultCodec(QTextCodec::codecForName("utf-8")) win = QMainWindow.new()
win.setCaption(tr("(4) はろー、わーるど!")) app.showMainWidget(win)
app.exec
|
- 実行結果 (ウィンドウタイトル部分3種類のみ抜粋)
クラスにする
今までクラスを使わずに書いてきましたが、このままでいくとボタンやラベルなどのコントロールを貼り付けて、イベント発生時に多数の何かをさせようとする場合に困ります。そんなわけで、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
| | 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 を再編集し...のパターンになっていくと思います。
以下は参考用の画像です。
- ランチャー登録前 (端末ウィンドウ上からスクリプトを直接実行)
- ランチャー登録後 (ランチャーから直接実行)