我试图在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