2011年1月12日水曜日

QtのModule構成

本日はQtの話題をひとつ
Qtはとても良くできたフレームワークなのですが、開発時に困ることが無いわけではありません。

Qtに多くの機能が追加されるに従って多くのクラスが追加されており、何をするためにどれを使えば良いのかを探し出すのが大変になってきてるんです。現在、Qt 4.7.1のドキュメントのAll Classesに記載されたクラス数を数えたら815程もあるようです。これは、ObsoluteやQt3 Support用クラスは省かれた数ですから、気が遠くなりそうですね。

Qtのドキュメントにおいては、これら膨大なクラス群の大きな区分として、モジュールという区分が使われています。この区分は概ね実装上もライブラリとしても分けられています。

おおざっぱに各モジュールのクラス数を数えてみました。ちなみにClass indexにはあるのに、ドキュメントのモジュールわけの中に入っていないクラスもいくつか・・・・ドキュメントの不備かな。数え間違ってる所もあるかもしれませんが、おおよそのボリュームが分かれば良いでしょう。
  • 開発用モジュール
    • QtCore (167クラス)
    • QtGui (404クラス)
    • QtMultimedia (8クラス)
    • QtNetwork (33クラス)
    • QtOpenGL (11クラス)
    • QtOpenVG
    • QtScript (13クラス)
    • QtScriptTools (1クラス)
    • QtSql (16クラス)
    • QtSvg (4クラス)
    • QtWebkit (15クラス)
    • QtXml (31クラス)
    • QtXmlPatterns (16クラス)
    • QtDeclarative (16クラス)
    • Phonon (14クラス)
    • Qt3Support (数えてません)
  • Qtツール用クラス
    • QtDesigner (21クラス)
    • QtUiTools (1クラス)
    • QtHelp (11クラス)
    • QtTest (3クラス)
  • Windows版開発用モジュール
    • QAxContainer (6クラス)
    • QAxServer  (3クラス)
  • Unix版開発用モジュール
    • QtDBus (17クラス)
 ぱっと見でわかる通り、QtGuiがダントツ。これは、GUI部品の多さやカスタマイズ性を担保するための抽象クラスの多さからきています。次点はQtCoreでしょうね。QtCoreはQtの各モジュールで使われる核となる部分です。多くのクラスはQtCoreに含まれるQObjectを継承してたりします。

Qt3Supportというモジュールは、Qt3時代のAPIとの互換性目的のため、新しくQt4を使って開発を行う場合には原則利用しません。

ちなみに、QAxというのは、ActiveX実装用のクラスですが、Windowsでしか使えず、QtDbusはその名の通り、D-Busのためのクラスですが、現状はLinuxでしか使えないと考えて居た方がよさそうです(Windowsへの移植等を行ってる方々もいますが)。

QtDeclarativeは、Qt4.7から実装されたQMLの拡張のためのクラス群のようですね。
まぁ、最初のうちは、QtCoreのクラスの使い方+QtGuiのクラスの使い方を中心にせめていき、必要に応じて、QtXmlや、QtNetworkを学習していくという方向で学んで行くのが良いかと思います。

あ、ちなみに、GUIアプリの作り方という意味では
・QtGUIでのHello World程度
・Qt Creatorの使い方のチュートリアル
・ペーパープロトタイピングの体験
・QML言語でのアプリケーション作成
・QtでのGUIアプリの作成
・QtTestでのテスト作成方法

といった方向で学習していくといいのかなぁ・・・・とか思うのですが、どうでしょうか?

参考:  http://doc.qt.nokia.com/4.7/index.html

0 件のコメント:

コメントを投稿