欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > VS编译生成moc文件

VS编译生成moc文件

2025/2/26 0:01:25 来源:https://blog.csdn.net/sinat_38854292/article/details/145653115  浏览:    关键词: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来进行编译:

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

示例图片

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

示例图片

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词