QTKFileDialogをコンパイル
復活したTKmixさんトコでQTKFileDialogのソースが公開されてましたので勉強がてらコンパイルしてみました。コンパイル環境はdev_img-1.6です。
ソースにサンプルが付属してたので、そのままコンパイルしたらmainが無いよというエラー(^^ゞ 以前qtアプリの勉強で使ったmainを使ってfrmSamleを呼び出したらできました。
気が付いたこと
- 本体メモリは~/Documentsより上に行けない、これはシャープ謹製アプリと一緒
- 設定変更で解除できました、コメント感謝
- クラス名って大文字で始まらなくても良いのね
- LANG=ja_jp.eucjpだと文字化け、デフォルトのLANG=jaだとおっけ
- Qtopiaにアイコン登録して起動すれば問題ないとのことです
ソースはQTアプリ作る上でかなり勉強になると思うので参考にさせてもらいます。
アプレットなプログラム
サムさんトコでClockAppletの置き換えの話題が出てました。前からアプレットってどうやって作るんだ?と思ってたのでこのくらいの短いプログラムだと非常に勉強になりますね。
ところで自分も試してみたいと思ったのですがclock.hがみつかりません(^^ゞ
自分の持ってるqtopia-free-1.5.0-1.i386.rpmには入ってないのかなぁ? 朝は時間がないのでまた後ほど探しますorz
ありました、ソースはqtopia-free-1.5.0-1.src.rpmの中でした。ちなみにファイルはこちらからダウンロードさせていただきました。
で、cppだけサムさんのに入れ替えてdev_img-1.6でコンパイル、もともとのMakefileではエラーになったのでtmakeで新規に作り直しました。makeしたら、なんかいきなりインストールまで行くんですけど、危険だな(^^ゞ とりあえずproファイルを書き換えてからtmake→make
できたsoなファイルをオリジナルと入れ替えて
qcop QPE/TaskBar reloadApplets()
うん、日付が出るようになりました。
引数付きシグナル
Ruby/Qteの勉強 その41
画面をタップしてその座標をテキストエリアに表示するプログラム。MyWidgetのmousePressEventにてシグナルtappedを発生、それを受けてMyLineEditのdispPosメソッドで座標を表示させる。その際にシグナルの引数として座標を示すクラスMyPointのオブジェクトを渡す。
シグナルで引数を持つ場合はオブジェクト作成の際にRSignal.new("Object")とし、sendWithで引数を渡す。
詳細は以下
http://noir.s7.xrea.com/rubyqte/?Ruby%2FQte%CE%AE%A5%B7%A5%B0%A5%CA%A5%EB%A1%A6%A5%B9%A5%ED%A5%C3%A5%C8#l2
Qtのオブジェクトには渡せない型があるとのことで、試しにQPointを引数にしてみたらエラーになった。
LOGOをマネる
Ruby/Qteの勉強 その40
LOGOというタートル(カーソル)を相対座標で制御して描画する言語をマネる。
http://ja.wikipedia.org/wiki/LOGO
といってもプログラム言語そのものを作成したわけではなく、Turtleというクラスを作成して、forward(100)をtt.foward(100)と記述といった具合にそのメソッドを記述することで制御を行います。
描画はQPainterで行うが描画対象はQWidgetではなくQPixmapに行う。QWigetの派生クラスPaintWidgetへの描画はrepaintメソッドで発生するpaintEvent内でのbitBltによるブロックコピーで行う、このあたりは以前やった内容を同じ。QPixmapに書くと画像ファイルへの保存が簡単にできます、これは便利(もしかしたらQWidgetからもできるのかもしれないですが)
サンプルでは描画サイズを640x480にしていますが若干画面からはみ出すので、QScrollViewを介してスクロールできるようにしています。
実際の描画内容はdrawメソッドから呼ぶようにしています。内容のサンプルはロゴを始めようにあるhirose01.pdfのプログラムを参考にしました。
ソースは別館のRuby/Qteの勉強部屋にて