title.png

^<< 2011.05/1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>$

Trackback の仕組みはありませんので、コメントにでも残していただくと嬉しいかも、です。

(2011.05.01)

Qt での開発

Qt (キュート) はクロスプラットフォームのアプリケーションフレームワーク。 GoogleEarth や Skype は Qtで作られているようですね。 で、最近、こいつを勉強しています。

フレームワークとしてネイティブの言語はC++。 もちろん各種言語向けに binding はありますが、 個人的には(やや不本意ながら)C++は得意な言語の一つですので、これ自体は問題ありません。

とりあえず「入門Qt4プログラミング」というオライリーの本を買って一通り目を通しました。 読んでみての感想は、フレームワークとしては結構筋が良さそうです。少なくとも MFCよりは断然に。 (まぁ私がそれなりにちゃんと使ったことがあるC++のフレームワークはせいぜい PowerPlant(Metrowerks CodeWarrior), MacApp(Apple), MFC(Microsoft), VCL(Borland) くらいしかないんですが…)

入門 Qt 4 プログラミング


ちなみに、現在の Qt4.7 は GPL/LGPL/Commercial のトリプルライセンス。

ざっと集めたMacでのTipsはこんな感じ。主に自分用メモ。

Qt がどうやってクロスプラットフォームに対応しているか、という機構はちょっと面白いと感じました。

  • まず、開発自体はプラットフォーム非依存なプロジェクトファイル(.pro) にファイルを追加したり設定したりすることで進んでいく
  • ビルドするときには qmake というツールで .pro を処理する
  • すると各プラットフォームごとの開発環境でビルドするための Makefileなどができる
  • あとはこの Makefileを make(MacやLinuxなど) や nmake(Winの VisualStudio) で処理する

qmake を通すときに起きることは以下のような感じ(いまのところの理解)。

  • .ui という uiフォームファイルから、それと等価な C++ クラスのコードを生成する
  • moc (Meta Object Compilar) とゆーツールで C++コードを処理して、シグナル/スロット/実行時型情報などの Qt 特有の情報をC++コードとして反映する
    • この際にコーディング時に書いておいた Q_OBJECT や slot, emit などのマクロやキーワードを利用する(一種のプリプロセッサですね)
  • qmake の起動引数で指定することで Makefile 以外にも .xcodeproj (Xcodeのプロジェクトファイル) や .vcproj (VSのプロジェクトファイル) を生成することもできる
    • つまり、Xcode や VisualStudio などの IDEで扱うこともできる

フレームワーク本体以外にも、Qt Creator という IDEも用意されており Qt アプリの開発であれば一番効率よく開発できるはず。 Qt Creator であればソースコードデバッグも可能です。

しばらく遊んでみることになりそうです。

ツッコミ