Q_OBJECT

 

 

#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特許に変換されるように、添加する工程;

 

 

 

おすすめ

転載: www.cnblogs.com/czwlinux/p/12301416.html