各種スクリプトでメモ帳を作成する(その3)
PerlQt/Embeddedが概ね完成したので、ようやくPerlでもメモ帳を作成できた。
download:notepad.lwl.tar.gz
QTライブラリ比較
Python版は一番充実しているが、Ruby版と比較しても、Perl版ではQtopia関連のクラスが充実していない。
何が実装されているのかを調べたい場合、Perl版ではソースコードを見るのが最も簡単だと思う(ダウンロード)。
「pig_Q」で始まるファイル名でクラスの実装状況が分かる(ただし、Drag&Drop関連など、Qtopiaには存在しない機能は#ifndef〜#endifでソースファイル全体を無効化している)。
Python版では以下のスクリプトでライブラリ辞書の内容を表示すると良い。
import qt import qtpe def pdict(name): dict = eval(name + ".__dict__") print "----<", name, ">----" for k in sorted(dict.keys()): print k, "=", dict[k] print "" pdict("qt") pdict("qtpe") pdict("qt.Qt") pdict("qt.QObject") pdict("qt.QWidget") # pdict("qt.Q...")で各種クラスの内容を表示できる
Ruby版では以下のスクリプトでモジュールやクラスの内容を表示すると良い。
参考:http://d.hatena.ne.jp/saronpasu/20080227
require "qte" require "qpe" def pentry(klass) list = Array.new klass.constants.each do |name| type = eval("#{klass.name}::#{name}.class") if type == Fixnum type = eval("#{klass.name}::#{name}"); elsif type == String type = '"' + eval("#{klass.name}::#{name}") + '"'; end list << "#{name} = #{type}" end klass.methods.each do |name| list << "#{name} = Method" end puts "----< #{klass.name} >----\n" list.sort.each do |s| puts "#{s}\n" end puts "\n" end pentry(Qte) pentry(Qpe) pentry(Qte::QObject) pentry(Qte::QWidget)
こうやって比較してみると、Perl版QTライブラリにもより多くのQtopia関連クラスを実装すべきか、悩むところである。