唯一気に入らないのが、
connectの第4引数。
connectはQTのQWidgetクラスかな?のメソッドで、第1引数のオブジェクトに第2引数のシグナルがきたら、第3引数のオブジェクトに対し第4引数のメッセージを投げる、という動きをするとかしないとか。
メッセージを投げる、と言う部分は、Rubyで言うところの、メソッド適用かな?そんな感じです。
で、第3引数で与えられたオブジェクトに対し適用する第4引数のメソッド名なんですが、これがなんと「文字列」。
Stringなんですね。
メソッドがファーストクラスなら、もっとこう気持ちいいのにと思いつつ、
ファーストクラスメソッドはRubyには似合わないという気もします。
どっちつかずなオレ。
いっそ、第3引数と第4引数を一緒にして、Procオブジェクト(プロシジャーオブジェクト)にした方がいいのに、とも思ったりします(このあたりはScheme使いの悪い癖)が、connect自体がQTライブラリのAPI?なので、なんともかんともニンニン(ふるー)。
苦肉の策で、実を採ると、こうなるかな、といった気分です。
Ruby/Qteだと
こうでした。
helloqte.rb ---- require 'qte' require 'qpe' include Qte include Qpe $a = QPEApplication.new([$0] + ARGV) $strHw="Hello World" class FormMain < QMainWindow def initialize super setCaption($strHw) vb=QVBox.new(self) setCentralWidget(vb) QLabel.new($strHw,vb) bt=QPushButton.new("QUIT",vb) connect(bt,QSIGNAL("clicked()"),$a,"quit") end end $frmMain = FormMain.new $a.showMainWidget($frmMain) $a.exec ---- $ruby helloqte.rb
Qteライブラリーの使い方を完全に忘れてる!
昔作ったソースを見よう見まねで作りました(日本語が変)。
実際にSL-C3000でデバッグしました。くそ〜。
ああ、rubyはわかりやすいのに、GUIしようとするとライブラリーとの格闘が始まるのを思い出しました。