这是因为在此程序中使用了Q_OBJECT宏,这个宏是Qt对C++的扩展。需要要先使用Qt提供的moc程序生成moc文件,然后再用C++编译器编译此文件,才能正常链接。
1、方式一 使用自定义生成命令
可以在VS中设置自定义生成工具来生成moc文件。
设置自定义生成工具,就是指定生成工具的路径和命令参数,以及输出文件。在VS编译前会先调用自定义生成工具来生成相关代码。
在需要自定义编译工具的头文件上右键-属性,就出现下面的界面。
选择“Custom Build Tool”后点击“应用”,就出现Custom Build Tool侧边栏。在侧边栏中填如下信息。
命令行:$(QT5_DIR)\bin\moc.exe %(Filename).h -o moc_%(Filename).cpp
输出:moc_%(Filename).cpp
输出类型:C/C++ compiler
这样就在输出目录下生成了moc文件。
并且VS自动将生成的文件加入到工程中进行编译
2、方式2 -- 手动生成
参考:Window系统下开发Qt(2)-- 使用moc编译信号与槽_Fisher-CSDN博客
手动使用moc程序生成moc文件。
例如:在命令行中执行
E:\Code\vcpkg\buildtrees\qt5-base\x86-windows-rel\bin\moc.exe SignalsAndSlots.h -o moc_SignalsAndSlots.cpp
生成后,需要自己手动将生成的文件加入到编译。