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

Mar*_*ijn 0 c++ qt vtable referenceerror

我正在使用c ++在Qt中编写一个程序.但是由于这个错误,我在这一点上陷入困​​境.奇怪的是,我创建了一个单独的程序,其中下面的代码工作,但当我把代码放在我的程序中时,我得到一个错误.

error: undefined reference to `vtable for Create_button_config'
Run Code Online (Sandbox Code Playgroud)

错误发生在我创建类的Header文件中.这是发生错误的头文件的一部分.

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";

    }
};
Run Code Online (Sandbox Code Playgroud)

我在main.cpp中使用它就像这样

Create_button_config config;
config.setParameters();
Run Code Online (Sandbox Code Playgroud)

这个错误来自何处?顺便说一句,这是一个正确的方法来创建一个在我的整个代码中可用的关联数组?

提前致谢

Tob*_*ght 9

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

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

顺便说一下,添加一个带有可选父级的构造函数是个好主意QObject,以获得用户想要的Qt内存管理(释放子对象)的一些好处.