1

このリンク: http://doc.trolltech.com/4.5/moc.html#mocは言う

moc ツールは、C++ ヘッダー ファイルを読み取ります。Q_OBJECT マクロを含む 1 つ以上のクラス宣言が見つかった場合、それらのクラスのメタオブジェクト コードを含む C++ ソース ファイルが生成されます。

メタオブジェクト コードとは

編集1

どのクラスで Q_OBJECT を書くべきかを知る方法は? 一例はシグナルとスロットですが、それを使用する必要がある他のケースはありますか?

4

4 に答える 4

4

記事Qt internals and Reversingを読んで、Qt とその moc コンパイラ (メタ オブジェクト コンパイラ) に関する詳細な知識を得ることができます。要約すると、Qt の moc コンパイラによってメタ オブジェクトが作成され、シグナル/スロット メカニズムなどのクラスに追加情報が追加されます。

于 2011-05-03T07:31:44.437 に答える
2

メタ オブジェクトは、新しいオブジェクトを作成したり、既存のオブジェクトを操作したりすることで、プログラミング言語を強化します。それらは、言語自体が実際には持っていない機能を提供します。メタ オブジェクトは、コンパイル時または実行時に解釈されます。Qt および C++ では、Meta Object Compiler (moc) によってコンパイル時に実行されます。

例として、シグナル/スロットの概念の使用があります。

于 2011-05-03T07:34:38.837 に答える
1

Qt 環境のメタ オブジェクト コードは、Q_OBJECT (および/またはその他の関連マクロ) を配置した C++ ソース ファイルの拡張バージョンである C++ ソース ファイルです。メタ オブジェクト コードには、シグナルとスロットのメカニズムが機能するように、実装とその他の追加 (メタ) コードが含まれます。

于 2011-05-03T07:33:47.247 に答える
1

メタオブジェクトには、名前などのオブジェクトに関するメタ情報や、シグナルとスロットのテキストによる説明が含まれています。これにより、シグナルを「名前」で呼び出すことが可能になります。QMetaObjectに関するドキュメントとこの記事を参照してください。

于 2011-05-03T07:37:44.953 に答える