13,007
回編集
(→概要) |
|||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Qtにおけるプリプロセッサは、標準的なC++プリプロセッサを拡張して、Qtフレームワークに特化した機能を提供している。<br> | |||
この拡張により、開発者はより効率的にQtアプリケーションを作成できるようになる。<br> | |||
また、クロスプラットフォームアプリケーションの開発がより効率的かつ柔軟になっている。<br> | |||
<br> | |||
Qt独自のプリプロセッサの主な特徴として、メタオブジェクトシステムのサポートが挙げられる。<br> | |||
これは、Qtの中核をなす機能であり、シグナル / スロットのメカニズムやプロパティシステムを可能にするものである。<br> | |||
<br> | |||
<code>Q_OBJECT</code>マクロは、このメタオブジェクトシステムの中心的な要素である。<br> | |||
このマクロをクラス定義に含めることにより、そのクラスにQtのメタオブジェクト機能が追加される。<br> | |||
これにより、シグナル / スロットの宣言、動的なプロパティの追加、実行時型情報 (RTTI) の拡張等が可能になる。<br> | |||
<br> | |||
プリプロセッサは、<code>Q_PROPERTY</code>マクロを使用してクラスのプロパティを宣言する機能も提供している。<br> | |||
これにより、Qtのプロパティシステムを利用でき、GUIデザイナーツールとの連携、QML (Qt Modeling Language) でのプロパティバインディングが容易になる。<br> | |||
<br> | |||
また、Qtのプリプロセッサは、プラットフォーム依存のコードを簡単に記述できるようにする機能も備えている。<br> | |||
例えば、Q_OS_*マクロを使用することにより、特定のOS向けのコードを条件付きでコンパイルすることができる。<br> | |||
<br> | |||
さらに、国際化 (i18n) のサポートも重要な機能の1つである。<br> | |||
<code>QT_TR_NOOP</code>や<code>Q_TRANSLATE_NOOP</code>等のマクロを使用することにより、翻訳可能な文字列を簡単にマークアップすることができる。<br> | |||
<br> | |||
これらの機能に加えて、Qtのプリプロセッサは、シグナル / スロットの接続を最適化するためのプライベートシグナル、メモリ管理を支援するためのスマートポインタマクロ等、<br> | |||
様々な便利な機能を提供している。<br> | |||
<br> | |||
Qtのプリプロセッサは、moc (Meta-Object Compiler) と呼ばれるツールと密接に連携している。<br> | |||
mocは、Qtのマクロを含むヘッダファイルを解析して、必要なメタオブジェクトコードを生成する。<br> | |||
<br> | |||
このプロセスは、一般的に、ビルドシステムにより自動的に処理されるため、開発者は特別な操作を行う必要はない。<br> | |||
<br><br> | <br><br> | ||