VS编译生成moc文件

本文参考:https://blog.youkuaiyun.com/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来进行编译:

  1. 选择“setquestion_widget.h”文件,右键选择“属性”->“配置属性”->“常规”->“项类型”,选择“自定义生成工具”;
  2. 点击“应用”,左边导航树中会新增一个条目“自定义生成工具”,展开它,选择下面的“常规”,填写以下内容(这是我的工程截图,实际开发需要根据你的工程来配置,可以参考工程中其他文件的配置):

示例图片

之后编译即可生成 moc 文件:

示例图片

同时,还要将 moc 文件添加到工程中:

示例图片
再次编译,即可编译成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值