Qt中关于emit和moc_*.cpp的自动生成
关于Qt中的emit()函数
直接查看emit的定义
#define emit
可以发现emit仅仅是个宏定义符号,编译器宏替换后就是个"空白",根本就不会编译它。
所以代码里完全可以去掉这个符号,反之也可以在任何代码前加上这个符号,如这行代码emit reurn;
编译的时候也不会有任何错误。
下面的发送信号语句,从c++语法上讲就是调用xxx(…)函数
emit xxx ( ...) ;
上面代码和只写:xxx(...);
编译结果是一样的。
至于定义emit符号的意义,猜想是让编程者知道这个定义要发送信号了。
关于Qt中自动生成的moc_*.cpp
moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT
,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,moc 的执行是在预处理器之前,因为预处理器执行之后,Q_OBJECT 宏就不存在了。
使用emit和实现发送的信号
eg.
①在.h中声明信号:
signals:void display_image(std::shared_ptr<Camera::ImageInfo> image_info);
②在.cpp中发送信号:
emit display_image(image_info);
③通过绑定信号和槽函数,来实现要完成的动作。
connect(mythread_camera_show,SIGNAL(display_image(std::shared_ptr<Camera::ImageInfo>)), this,SLOT(label_display_image(std::shared_ptr<Camera::ImageInfo>)));
Qt中关于emit和moc_*.cpp的自动生成相关推荐
- mybaitis快速生成_Mybatis中使用mybatis-generator结合Ant脚本快速自动生成Model、Mapper等文件...
使用过Mybatis的同学都知道,针对每一个项目中使用到的数据库表都需要建立其对应的数据库增删改查xxxMapper.xml文件.实体类xxx.java文件以及其他类用来调用进行数据库操作的xxxMa ...
- 解决qt中cmake单独存放 .ui, .cpp, .h文件
创建时间:2023-02-18 17:58:04 设想 项目文件较多,全部放在一个目录下就像依托答辩. 希望能将头文件放入include,ui文件放入ui,源文件放入src. 为了将Qt代码和一般非Q ...
- 第五十七篇:VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类
之前没有用VS或者在vs中一个源程序写到底,没有使用C++编一个工程 打开VS2015 ,新建VS win32工程,前面步骤很简单,不再阐述 下面直接开始: 新建一个VC++ win32的程序, 在源 ...
- 25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
转自:https://blog.csdn.net/wangyj1992/article/details/78387728 因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我 ...
- 在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1. 前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom. ...
- 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)
公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...
- ASP.NET基础教程-Web 自定义控件的使用-根据属性值从数据库中提取数据并在页面上自动生成一个表格...
一.新建一个Web 控件库; 二.在WebCustomControl1.cs文件中编制如下代码: using System; using System.Web.UI; using System.Web ...
- 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
- 工作中遇到的问题之android客户端自动生成带logo的二维码
android中生成动态二维码很简单,网上随便搜一搜便能找到,本以为任务很快就把任务解决了,可是客户说二维码中一定要添加他们公司的logo这可把哥们难倒了,开始再次投入度娘的怀抱,查看各位大神的代码, ...
- java dao层代码生成器_实际开发中 dao、entity的代码怎样自动生成?一款工具送给你...
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
最新文章
- Google Voice开始发送邀请函
- 专家:端午将至湖北地区挂马网站激增 用户需警惕
- python内置collections模块的使用
- 秒懂INNODB的锁
- Cpp / std::move 原理
- 如何从数学角度解释何恺明新作Masked Autoencoders (MAE)?
- 数学知识总结——矩阵
- 支付宝新版SDK-PC扫码支付-手机浏览器H5支付
- 新浪云python示例_Python Web框架Flask中使用新浪SAE云存储实例
- PHPmyadmin 和 MySQL 的配置笔记
- Python的实例方法,类方法,静态方法之间的区别及调用关系
- Android开源项目,圆形ImageView之CircleImageView
- sysv-rc-conf管理Ubuntu server开机启动服务
- H264--编码原理以及I帧B帧P帧--1
- SecureCRT背景颜色设置
- html flag属性,纯CSS实现文章左上角Flag标签
- 什么是Python爬虫?一篇文章带你全面了解爬虫
- 有哪些电容笔值得推荐?值得买的电容笔测评
- 虚幻4渲染编程(光线追踪篇)【第一卷:光线追踪篇开篇综述】
- Java后端处理video快进快退播放以及断点续传的原理和代码
热门文章
- 大学计算机构成课程论文,大学计算机课程论文
- python 基因测序_科学网-python3 计算 基因组测序结果文件 各碱基数目(个人练习)-靳泽星的博文...
- 微型计算机的硬件系统主要核心软件,计算机硬件系统最核心的是什么
- 近几天,被这个国家的最高科技奖刷屏了~
- umount提示target is busy无法卸载
- Centos5反p2p模块安装精要
- 美国企业家宣言(转)
- 领航机器人广告段子_医院机器人物流科技宣传广告语_段子网收录最新段子
- 小程序之100推荐:801~900
- ubuntu切换python版本解决语法不匹配问题(SyntaxError: invalid syntax)