2012-11-24 43 views
2

我想在我的程序中使用信號和插槽,爲此我被告知需要添加Q_OBJECT如下。QObject與宏的錯誤,包括

嗯,我有一個類:

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

這給它說「Q_OBJECT沒有指定類型」的錯誤。如果我比添加#include它給出的錯誤'未定義的引用虛擬表A'

那麼,這是什麼正確的方法呢?

回答

2

Q_OBJECT宏指的是QObject(或其他子類)的子類。如果你希望你的班級使用信號和插槽,這也是必需的。

class A 
    : public QObject 
{ 
    Q_OBJECT 

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

Q_OBJECT

的Q_OBJECT宏必須出現在聲明自己的信號和槽一類 定義的私有部分或使用通過Qt的元對象提供的其他 服務系統。
...
注意:
該宏需要該類是QObject的子類。 ...

+1

好的。但由於某種原因,我無法得到它的工作。我忘了我的類繼承自QGraphicsItem,並且當我將Qobject添加爲超類時,它保持給定的vtable錯誤。 – Kat

+0

沒關係,它突然解決了。我可能需要重建所有。 – Kat