#define Q_OBJECT \ パブリック:\ 静的 のconst QMetaObject staticMetaObject。\ 仮想 CONST QMetaObject *メタオブジェクト()のconst ; \ 仮想 無効 * qt_metacast(のconst のchar * ); \ 仮想 int型 qt_metacall(QMetaObject ::コール、int型、無効 ** )。\ QT_TR_FUNCTIONS \ プライベート:\ Q_DECL_HIDDEN_STATIC_METACALL 静的 無効 qt_static_metacall(QObjectを*、QMetaObject ::コール、int型、空** ); \ QT_WARNING_POP \ 構造体QPrivateSignal {}。\ QT_ANNOTATE_CLASS(qt_qobject、"" )# はQT_TR_FUNCTIONS \定義 静的インラインQStringのTR(CONST のchar * S、CONST チャー * C = Q_NULLPTR、INTを N = - 1 )\ { 戻りstaticMetaObject.tr(S、C、N)。} \ QT_DEPRECATED 静的インラインQStringのtrUtf8(CONST のchar * S、CONST チャー * C = Q_NULLPTR、INT、N = - 1 )\ {リターン staticMetaObject.tr(S、C、N)。}
Q_OBJECTマクロコードであり、Qtのメタオブジェクトシステムを含む、としてメタオブジェクト()、qt_metacast(のconstのchar *)、qt_metacall(QMetaObject ::コール、int型、無効**); TR、trUtf8()関数など。
プログラムがコンパイルされるときは、MOCツールmoc_xxx.cppファイルによって生成され表示されます。この関数は宣言だけでなく、文の中Q_OBJECTの機能を実現するために、変数の定義を含み;
これは、qt_metacast(のconstのchar * _clname)とqt_metacall(QMetaObject ::コール_c、int型_id、無効** _)関数はシグナルとスロットの呼び出しに関連付けられている。我々は、信号の文関数がコードを実装されていない書き込みと、ただし、対応するMOCの実装コードを与え、すべての関数のコードはQMetaObject ::アクティベートが含まれている(この、&staticMetaObject、signal_xxx、param_list); reinterpret_castはパラメータがvoid *またはボイドのCONST void *型のタイプにすべてを強くしています*フォーム、ビット損失は、強いターンはstatic_castを生じない変換されたフォームを使用してreinterpret_castは、すなわち、より強い強度値ターンが続く前には同じであるが、変数の型、ただしconst型、強いの転送が追加または非const CONST型タイプはconst_cast特許に変換されるように、添加する工程;