用 VS Code 搞 Qt6:信号、槽,以及QObject( 二 )


文章插图
这个错误是因为 MOC 生成的代码最终要用回到我们的程序中的,但代码文件没有包含这些代码 。所以你看上面已经提示你了,解决方法是包含 main.moc 。这个文件名和你定义 DemoObject 类的代码文件名相同 。我刚刚的代码文件是 main.cpp,所以它生成的代码文件就是 main.moc 。
不过,#include 指令一定要写在 DemoObject 和 TestRecver 类的定义之后,这样才能正确放入生成的代码 。# include 放在文件头部仍然会报错的,此时,DemoObject 和 TestRecver 类还没有定义,无法将 main.moc 中的源代码插入到 main.cpp 中(会找不到类) 。
#include <iostream>#include <qobject.h>#include <qstack.h>class DemoObject : public QObject{// 这个是宏Q_OBJECT……};class TestRecver : public QObject{// 记得用这个宏Q_OBJECT……};#include "main.moc"int main(int argc, char **argv){……return 0;}

经验总结扩展阅读