当前位置: 首页 > article >正文

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 文件添加到工程中:

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


http://www.kler.cn/a/547343.html

相关文章:

  • 【Docker】容器被停止/删除的方式及命令:全面解析与实践指南
  • 文生图与图生图两款AI工具Midjourney(MJ)和Stable Diffusion(SD)对比
  • React生产环境下使用mock.js
  • C# 调用 C++ 动态库接口
  • 【LeetCode: 611. 有效三角形的个数 + 排序 + 双指针】
  • 07:串口通信(二):收发数据包
  • SQL SERVER的PARTITION BY应用场景
  • 滑动窗口算法篇:连续子区间与子串问题
  • 算法与数据结构(多数元素)
  • Spring篇--AOP
  • 并发编程---synchronized关键字,以及synchronized同步锁
  • Vue2官网教程查漏补缺学习笔记 - Part2深入了解组件 - 4插槽5动态组件异步组件6处理边界情况
  • 面试经典150题——位运算
  • 零基础学习人工智能
  • 2024问题总结
  • Redis 04章——持久化
  • SPA 收入支出/技师提成自动统计系统——东方仙盟
  • 红黑树:高效平衡二叉树的奥秘
  • Unity嵌入到Winform
  • shell命令脚本(2)——条件语句