4

我想在我的程序中使用信号和插槽,为此我被告知需要添加 Q_OBJECT,如下所示。

好吧,我有一堂课:

class A
{
    Q_OBJECT
public:
    A();
};

这会给出一个错误,上面写着“Q_OBJECT 没有命名类型”。如果我添加 #include 它会给出错误“未定义的对 A 的 vtable 的引用”

那么这样做的正确方法是什么?

4

1 回答 1

6

Q_OBJECT宏适用于 a 的子类QObject(或其他子类)。如果您希望您的班级使用信号和插槽,它也是必需的。

class A 
    : public QObject
{
    Q_OBJECT

 public:
    A(QObject *parent = 0);
};

Q_OBJECT

Q_OBJECT 宏必须出现在声明自己的信号和槽或使用 Qt 元对象系统提供的其他服务的类定义的私有部分中。
...
注意:
这个宏要求类是 QObject 的子类。...

于 2012-11-24T17:24:55.243 回答