Qt 5.15.2 Windows 子目录项目: undefined reference to `vtable for xxx‘

网上查了很多资料,都在说是 Q_OBJECT 的问题,但是不适用我的项目。

首先我有一个子目录项目,专门承载基础的 UI 控件,其中有这么一个:

#ifndef HOVERBUTTON_H
#define HOVERBUTTON_H

#include "QtCore/qcoreevent.h"
#include 
#include 
#include 

class HoverButton : public QPushButton
{
    Q_OBJECT

public:
    explicit HoverButton(QWidget *parent = nullptr) : QPushButton(parent)
    {
        this->setAttribute(Qt::WA_TranslucentBackground);
        this->setAttribute(Qt::WA_NativeWindow);
        setFlat(true);
        this->setStyle(QStyleFactory::create("Fusion"));
    }

    virtual ~HoverButton() {}

signals:
    void hoverEnter();
    void hoverLeave();

    // QObject interface
protected:
    bool event(QEvent *event) override
    {
        switch (event->type()) {
        case QEvent::HoverEnter:
            emit hoverEnter();
            break;
        case QEvent::HoverLeave:
            emit hoverLeave();
            break;
        default:
            break;
        }
        return QPushButton::event(event);
    }
};

#endif // HOVERBUTTON_H

看着没有任何问题,我在另外一个子目录下去引用 HoverButton ,Qt 6.2.4 Mac 可以正常运行。放在 Qt 5.15.2 WIndows 就会报错:undefined reference to vtable for HoverButton,朝 Q_OBJECT 做的努力都不生效。。后来发现把这个类的定义和使用这个类的文件放在同一个子目录就好了,不知道为什么。。

你可能感兴趣的:(Qt,qt,windows,开发语言)