1、这时候错误出现了,可是这个错误很多时候让人摸不着头脑,vtable是虚拟表的意思,类在创建实例的时候,Qt就是靠虚拟表去找类的相关定义的。所以这里出现这个问题,肯定是没有找到定义了。这里如果我去掉Q_OBJECT和所有的信号和槽,问题就能解决了。如下图,界面显示出来了,编译成功:

3、然后我们就要考虑这里我们的项目出错在没有生成moc文件,所以我们需要让项目生成moc文件,经过查找qt帮助文档关于moc的说明,我们知道在类文件的末尾包含xxx.moc文件即可。

5、譬如我直接改为sema.cpp,错误没有再出现,界面显示正常。这种方法才是改正vtable错误的正确方法,当然关于内部的原理及具体的分析我们在日后的文章中再说把。网上其他方式是碰巧给解决了,并非彻底的解决之道,所以这里记录下来供大家参考。最终结果如下图。
