Qt:对 'vtable' 的未定义引用

Qt: Undefined reference to 'vtable'

我正在使用 C++ 在 Qt 中开发一个程序。但是由于这个错误,我被困在了这一点上。奇怪的是,我创建了一个单独的程序,其中以下代码有效,但是当我将代码放入我的程序中时,出现错误。

error: undefined reference to `vtable for Create_button_config'

错误出在我创建 class 的头文件中。这是头文件中出现错误的部分。

class Create_button_config : public QObject
{
    Q_OBJECT

public:

    QMap<QString, QString> buttons;

    void setParameters(){
        qDebug() << "test";
        buttons["ID1"] = "#52B1";
        buttons["ID2"] = "#52B2";
        buttons["ID3"] = "#52B3";

    }
};

我在 main.cpp 中这样使用它

Create_button_config config;
config.setParameters();

知道这个错误是从哪里来的吗? 顺便问一下,这是制作在我的整个代码中可用的关联数组的正确方法吗?

提前致谢

缺少 vtable 通常是未能在链接器参数中包含 moc 的输出的症状。确保您在页眉上 运行 moc,并且链接了结果。

请注意,如果您使用的是 qmake,您可能需要重新 运行 qmake 来生成新的 makefile,如果您更改了 class 而不是Q_OBJECT 所以现在是 Q_OBJECT - 它不会知道 moc 应该是 运行.

顺便说一句,添加一个构造函数是个好主意,该构造函数采用可选的父对象 QObject,以便在用户需要的地方获得 Qt 内存管理(释放子对象)的一些好处。