プログラムでシグナルとスロットを使用したいので、Ineed に以下のように Q_OBJECT を追加するように指示されました。
さて、私はクラスを持っています:
class A
{
Q_OBJECT
public:
A();
};
これにより、「Q_OBJECT はタイプに名前を付けていません」というエラーが発生します。#include を追加すると、「A の vtable への未定義の参照」というエラーが表示されます
それで、これを行う正しい方法は何ですか?
Q_OBJECT
マクロは、a (または他のサブクラス) のサブクラス用ですQObject
。クラスでシグナルとスロットを使用する場合にも必要です。
class A
: public QObject
{
Q_OBJECT
public:
A(QObject *parent = 0);
};
Q_OBJECT マクロは、独自のシグナルとスロットを宣言するか、Qt のメタオブジェクト システムによって提供される他のサービスを使用するクラス定義のプライベート セクションに表示する必要があります。
...
注:
このマクロでは、クラスが QObject のサブクラスである必要があります。...