一、vtable for xxx
自己创建类的时候没有选继承,默认连Q_OBJECT都没有
class SelectScene : public xxx
{
//原来没有写Q_OBJECT
public:
explicit SelectScene(QWidget *parent = nullptr);
signals:
public slots:
};
而后自己发现没有Q_OBJECT后信号槽用不了,又补上但是报错了一堆,如题:error: undefined reference to `vtable for xxx'。很纳闷,重新创建一个新文件运行成功,但是再复制粘贴过来却不行。于是查阅资料发现是编译的问题,编译过再添加Q_OBJECT的话就会出现这个问题。
原因是Q_OBJECT宏内包含了纯虚函数,而子类没有实现父类的纯虚函数。初次编译后再进行添加此宏之后再编译是不会编译新加的宏的。
解决方法:需要先进行qmake
二、使用windeployqt.exe打包仍报错,ZdaPvj缺少动态库
使用自带的命令行使用就会出现这个问题。其实QT安装的时候会自带命令行,从自带的命令行使用就不会出错。如图:
在此上面进行一样的操作即可解决问题。
xxx/windeployqt.exe ./xxx.exe即可