VS编译生成moc文件
本文参考:https://blog.csdn.net/zyhse/article/details/117476703
项目场景:
使用VS2019开发QT工程,当我们向工程中新增文件(setquestion_widget.h和setquestion_widget.cpp):
// setquestion_widget.h
class CSetQuestionWidget: public QDialog {
Q_OBJECT // 一定要加
// ...省略其他代码
}
// setquestion_widget.cpp
#include "setquestion_widget.h"
CSetQuestionWidget::CSetQuestionWidget(QWidget *parent) : QDialog(parent) {}
// ...省略其他代码
直接编译会报错:
原因分析:
这是因为没有生成moc文件导致。首先要确保类有 Q_OBJECT 这个宏定义,之后还要指定文件的编译方式,让它生成对应的moc文件。
解决方案:
在 Visual Studio 工程中,通常包含多个源文件。Visual Studio 提供了“自定义生成工具”功能,允许为每个文件指定独立的编译方式。我们给需要生成 moc 的头文件,指定使用moc来进行编译:
- 选择“setquestion_widget.h”文件,右键选择“属性”->“配置属性”->“常规”->“项类型”,选择“自定义生成工具”;
- 点击“应用”,左边导航树中会新增一个条目“自定义生成工具”,展开它,选择下面的“常规”,填写以下内容(这是我的工程截图,实际开发需要根据你的工程来配置,可以参考工程中其他文件的配置):
之后编译即可生成 moc 文件:
同时,还要将 moc 文件添加到工程中:
再次编译,即可编译成功。