1. ホーム
  2. c++

[解決済み] Q_OBJECT マクロは何をするのですか? なぜ、すべての Qt オブジェクトはこのマクロを必要とするのですか?

2022-05-16 03:41:36

質問

Qt を使い始めたばかりですが、すべてのクラス定義の例で、マクロ Q_OBJECT を最初の行に含んでいることに気づきました。このプリプロセッサマクロの目的は何でしょうか?

どのように解決するのですか?

からの Qt ドキュメント :

メタオブジェクトコンパイラ(moc)は、QtのC++を扱うプログラムです。 Qt の C++ 拡張を処理するプログラムです。 拡張を扱うプログラムです。

mocツールはC++のヘッダーファイルを読みます。 もし、1つまたはそれ以上のクラスが見つかったら を含む 1 つ以上のクラス宣言が見つかった場合、Q_OBJECT マクロを含む 1 つ以上のクラス宣言が見つかった場合、C++ ソースファイルを作成します。 メタ・オブジェクト・コードを含む これらのクラスのメタオブジェクトコードを含むC++ソースファイルを生成します。他のものの中で メタオブジェクトコードは シグナルとスロットのメカニズム、ランタイム型情報 ランタイム型情報、そして ダイナミック・プロパティ・システムに必要です。