C++ 链接器错误使用双击事件创建QLabel

C++ 链接器错误使用双击事件创建QLabel,c++,qt,mouseevent,qlabel,C++,Qt,Mouseevent,Qlabel,我正在创建一个QLabel子类,将DoubleClickEvent添加到其中。我已经创建了以下内容,但是我遇到了一些奇怪的链接器错误,也许有人可以指出我做错了什么 //Header #ifndef IMAGE_LABEL_H #define IMAGE_LABEL_H #include <QLabel> #include <QMouseEvent> class image_label : public QLabel { Q_OBJECT public: ima

我正在创建一个QLabel子类,将DoubleClickEvent添加到其中。我已经创建了以下内容,但是我遇到了一些奇怪的链接器错误,也许有人可以指出我做错了什么

//Header
#ifndef IMAGE_LABEL_H
#define IMAGE_LABEL_H

#include <QLabel>
#include <QMouseEvent>

class image_label : public QLabel
{
    Q_OBJECT
public:
image_label(QWidget* parent = 0);
~image_label();

signals:
    void doubleClicked();

protected:
    void mouseDoubleClickEvent(QMouseEvent * e);

};


#endif


//CPP 

#include "image_label.h"
#include <QMouseEvent>

image_label::image_label(QWidget* parent) : QLabel(parent)
{
}

image_label::~image_label()
{
}

void image_label::mouseDoubleClickEvent(QMouseEvent* e)
{
    if (e->button() == Qt::LeftButton)
    {
        emit doubleClicked();
        QLabel::mouseDoubleClickEvent(e);
    }
}

有人能帮我解释为什么会出现这些错误吗?

您必须在文件
image\u label.h
上运行MOC预处理器。这将生成一个文件
moc\u image\u label.cpp
,您必须将其包含在生成中。错误消息表明您尚未执行此操作。(错误消息中提到的符号
image\u label::metaObject
等在
moc\u image\u label.cpp
中定义)

必须在文件
image\u label.h
上运行moc预处理器。这将生成一个文件
moc\u image\u label.cpp
,您必须将其包含在生成中。错误消息表明您尚未执行此操作。(错误消息中提到的符号
image\u label::metaObject
等在
moc\u image\u label.cpp
中定义)

不在QT中,但已看到此类链接错误。任何未定义的虚拟函数。最有可能的是,我认为不值得检查。不在QT中,但看到过这样的链接错误。任何您未定义的虚拟函数。很有可能,但我认为值得一查。
 image_label.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall image_label::metaObject(void)const " (?metaObject@image_label@@UBEPBUQMetaObject@@XZ)

  image_label.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall image_label::qt_metacast(char const *)" (?qt_metacast@image_label@@UAEPAXPBD@Z)

  image_label.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall image_label::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@image_label@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

  image_label.obj : error LNK2019: unresolved external symbol "protected: void __thiscall image_label::doubleClicked(void)" (?doubleClicked@image_label@@IAEXXZ) referenced in function "protected: virtual void __thiscall image_label::mouseDoubleClickEvent(class QMouseEvent *)" (?mouseDoubleClickEvent@image_label@@MAEXPAVQMouseEvent@@@Z)