Ruby/Qteでもイベントが受けられた

昨日の続きだが、調査の結果、QObjectクラスに追加されているcatchEventメソッドを呼び出すことによって、イベントを受信できるようになることが判明した。

class MyWidget < QWidget
    def initialize(*args)
        super(*args)
        catchEvent
        :
        :
    end

    def paintEvent(pe)
        :
        :
    end

    :
    :
end


catchEventメソッドは「/opt/QtPalmtop/lib/ruby/site_ruby/1.8/qte.rb」で定義されており、イベントフィルタをインストールすることによって実現している。

Rubyのメモ帳は、終了時の処理をaboutToQuitシグナルからcloseEventに切り替えた。

download:notepad.py_rb.tar.gz

また、参考にしたRQR(rqr.rb)もアップロードして置く。

download:rqr.rb_0.2.8.tar.gz

RQRの修正点は以下の通り。

  • 保存してあるメール、登録してあるアドレスが無いときに、nilアクセスが発生しRQRが突然終了する問題の修正。
  • メールの本文、アドレスのメモと番地、テキストに入力フォーカスが存在すると、タブキーでは入力フォーカスを移動することができない問題の修正。