我試圖在fridge magnets example的可拖動小部件之一發生雙擊時觸發信號。下面是我的示例源所做的更改:Qt - 沒有這樣的信號錯誤
DragLabel:
class DragLabel : public QLabel
{
public:
DragLabel(const QString &text, QWidget *parent);
QString labelText() const;
public slots:
void testSlot(){qDebug()<<"testSlot";} //<-- implemented this slot
protected:
void mouseDoubleClickEvent(QMouseEvent *ev){emit testSignal();} //<-- overriden this method
private:
QString m_labelText;
signals:
void testSignal(); //<-- added this signal
};
我在實現文件中唯一改變的是增加connect(this,SIGNAL(testSignal()),this,SLOT(testSlot()));
到DragLabel的構造。
試圖編譯項目導致 '未定義的參考`DragLabel :: testSignal()' 和 'collect2:LD返回1退出狀態' 的錯誤。
當我註釋掉調用信號,它編譯和運行,但散發出「對象::連接:沒有這樣的信號QLabel :: testSignal()在draglabel.cpp」在應用程序輸出警告。顯然,testSignal()不被識別爲一個信號。
我試圖添加Q_OBJECT宏DragLabel但在4「未定義的參考`虛表的DragLabel」的結果「警告和」 collect2:LD返回1個退出狀態「的錯誤。
我錯過了什麼?
您的示例代碼缺少Q_OBJECT宏調用,這可能是您的問題的原因。 – 2010-04-09 19:11:03
噢,我忘了提及,我曾嘗試添加Q_OBJECT。我會在這個問題上加上這一點。 – 2010-04-09 19:20:04