Qt核心:元对象系统、属性系统、对象树、信号槽
一、元对象系统
1、Qt 的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。
2、元对象系统是 Qt 对原有的 C++进行的一些扩展,主要是为实现信号和槽机制而引入的, 信号和槽机制是 Qt 的核心特征。
3、要使用元对象系统的功能,需要满足以下三个条件
①、该类必须继承自 QObject 类。
②、必须在类声明的私有区域添加 Q_OBJECT 宏,该宏用于启动元对象特性,然后便可 使用动态特性、信号和槽等功能了。只有添加了这个宏, moc 才能对 里的信号与槽的代码进行预处理
③、元对象编译器(moc)为每个 QObject 的子类,提供实现了元对象特性所必须的代码。
4、元对象系统具体运行原则
①、因为元对象系统是对 C++的扩展,因此使用传统的编译器是不能直接编译启用了元 对象系统的 Qt 程序的,对此在编译 Qt 程序之前,需要把扩展的语法去掉,该功能就 是 moc 要做的事。
然后再由标准 ++编译器进行编译 。
②、moc 全称是 Meta-Object Compiler(元对象编译器),它是一个工具(类似于 qmake), 该工具读取并分析 C++源文件,若发现一个或多个包含了 Q_OBJECT 宏的类的声明, 则会生成另外一个包含了 Q_OBJECT 宏实现代码的 C++源文件(该源文件通常名称 为 moc_*.cpp) ,这个新的源文件要么被#include 包含到类的源文件中,要么被编译键 接到类的实现中(通常是使用的此种方法)。注意:新文件不会“替换”掉旧的文件, 而是与原文件一起编译。
5、其他概念
①、元对象代码:指的是 moc 工具生成的源文件的代码,其中包含有 Q_OBJECT 宏的实 现代码 ②、moc 工具的路径为:F:\app\Qt5.8.0MinGw\5.8\mingw53_32\bin
元对象系统与反射机制
reflection 模式(反射模式或反射机制):是指在运行时,能获取任意一个类对象的所有类型信息、属性、成员函数等信息的一种机制。
二、属性系统
1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数 (即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性 值。
2、在 Qt 中属性和数据成员是两个不同的概念,他们可以相关联也可以没有联系,比如名为 a 的属性,与数据成员 a,虽然他们名称相同,若他们之间没有产生关联,则数据成员 a 与属性 a 是完全不相关的,通常,一个属性都有与之相关联的数据成员,而采用的命名规 则通常是加上 m_前缀,比如属性名为 a,则与之相关联的数据成员名称通常为 m_a。
三、信号与槽
为此 Qt 引入了一些关键字,他们是 slots、signals、emit,这些都不是 C++关键字,是 Qt 特有的,这些关键字会被 Qt 的 moc 转换为标准的 C++语句。
信号和槽其实是观察者模式的一种实现,最大限度的弱化了类之间的耦合关系
1. 相互关系
用一个信号可以连接多个槽(一对多)
多个信号可以连接一个槽(多对一)
信号可以和信号连接(转嫁)
连接可以被disconnect函数删除
2.disconnect函数
static bool disconnect(const QObject *sender, const char *signal,const QObject *receiver, const char *member);
0 可以用作通配符,分别表示“任意信号”、“任何接收对象”或“接收对象中的任何插 槽”。
sender 永远不会是 0
disconnect(&ma, 0, 0, 0); 断开与对象 ma 中的所有信号相关联的所有槽。 disconnect(&ma , SIGNAL(s()), 0, 0);断开与对象 ma 中的信号 s 相关联的所有槽。 disconnect(&ma, 0, &mb, 0); 断开 ma 中的所有信号与 mb 中的所有槽的关联
3.Qt::ConnectionType
type:用于指明信号和槽的关联方式,它决定了信号是立即传送到一个槽还是在稍后 时间排队等待传送。关联方式使用枚举 Qt::ConnectionType 进行描述,下表为其取值 及意义

每个线程都有自己的事件队列,线程在事件队列中接受信号,

对象树与生命期
tips:
回调函数:使用一个指向函数的指针去调用需要的函数, 这样就可以调用任意名称的函数(只要函数类型与指针相同即可),
枚举值默认从0开始
进程有独立的地址空间,线程共享一个地址空间
多个线程独享栈区,共享堆区、代码区、全局区
进程拥有全局唯一的ID值(PID)
线程有进程内唯一的ID值(TID)
#define定义标识符
使用#define可以用来定义标识符,所谓标识符可以简单理解为一个能够表示一定内容的符号,其格式为
#定义 标识符 内容
#define name stuff
相关文章:
Qt核心:元对象系统、属性系统、对象树、信号槽
一、元对象系统 1、Qt 的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。 2、元对象系统是 Qt 对原有的 C进行的一些扩展,主要是为实现信号和槽机制而引入的, 信号和槽机制是 Qt 的核心特征。 3、要使…...
【若依框架2】前后端分离版本添加功能页
在VSCode的src/views下新建个文件平example,在example下创建test文件夹,在test里创建index.vue文件 <template> <h1>Hello world</h1> </template><script> export default {name: "index" } </script><style s…...
Unity Bolt模块间通信
使用Bolt无代码设计开发的时候,我们不能简单的认为只需要一个FlowMachine就可以完成所有流程的开发。我们需要不同的模块进行拆分,以便更好的管理和协作。这就需要不同模块之间的通信处理。经过研究与使用,将常用的通信方式总结如下ÿ…...
please choose a certificate and try again.(-5)报错怎么解决
the server you want to connect to requests identification,please choose a certificate and try again.(-5)...
国产自研BI系统,更懂中国企业数据分析需求
国产自研BI系统是指由中国企业自主研发的商业智能(BI)系统,这类系统更加了解中国企业的数据分析需求,能够提供更加贴合实际的解决方案。比如说奥威BI系统就是典型的国产自研,不仅了解中国企业的数据分析需求࿰…...
基于Java的高校竞赛管理系统设计与实现(亮点:发起比赛、报名、审核、评委打分、获奖排名,可随意更换主题如蓝桥杯、ACM、王者荣耀、吃鸡等竞赛)
高校竞赛管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述4.2 系统角色 五、系统…...
出血性脑卒中临床智能诊疗建模
先说下数据,随访流水号是患者的后续诊断号码,表3有对应的数据,首先需要做下数据整理,需要整理出每次诊断的指标(包括表1中人物信息、表2中的检查指标以及表3中的检查指标,表4中有对应的时间,以刚…...
Cesium 空间量算——生成点位坐标
文章目录 需求分析1. 点击坐标点实现2. 输入坐标实现 需求 用 Cesium 生成点位坐标,并明显标识 分析 以下是我的两种实现方式 第一种是坐标点击实现 第二种是输入坐标实现 1. 点击坐标点实现 //点位坐标getLocation() {this.hoverIndex 0;let that this;this.view…...
为什么曲面函数的偏导数可以表示其曲面的法向量?
为什么曲面函数的偏导数可以表示其曲面的法向量? 引用资料: 1.知乎shinbade:曲面的三个偏导数为什么能表示法向量? 2.Geogebra羅驥韡 (Pegasus Roe):偏導數、切平面、梯度 曲面 F ( x , y , z ) 0 F(x,y,z)0 F(x,y,…...
❤Uniapp报npx update-browserslist-db@latest
❤ Uniapp报npx update-browserslist-dblatest 按照提示先更新一下 npx update-browserslist-dblatest然后打开一下端口...
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
文章目录 一、静态成员函数简介1、静态成员函数概念2、静态成员函数声明3、静态成员函数访问4、静态成员函数只能访问静态成员 二、代码示例 - 静态成员函数 一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C 类中 , 静态成员函数 是一种 特殊的函数 , 该函数…...
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(三)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 1、上一节说到RedisReceiver ,这里有调用了NbcioRedisListener自定义业务监听,如下…...
用友第五届开发者大赛初赛晋级公示,复赛火热进行中!
用友第五届开发者大赛初赛晋级公示,复赛火热进行中! 自7月13日鸣锣揭幕,9月6日各赛道作品初评工作完成,历时近两月,用友第五届企业云服务开发者大赛初赛阶段顺利落下帷幕。作为备受各界开发者关注的赛事,本…...
SSL证书如何做到保障网站安全?
当网站显示不安全时,用户会在头脑中产生该网站是否合法的疑问,如果是购物网站或者购物商城,那意味着可能会损失大部分的用户。而SSL证书能有效保障网站的安全性,轻松解决网站不被用户信任的问题。那么,SSL证书究竟是如…...
C# Onnx Yolov8 Detect Poker 扑克牌识别
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…...
想要精通算法和SQL的成长之路 - 最长等差数列
想要精通算法和SQL的成长之路 - 最长等差数列 前言一. 最长等差数列 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 最长等差数列 原题链接 思路: 我们假设dp[i][j] 为:以num[i]为结尾,以j为公差的最长等差子序列的长度。由此可知&a…...
【简单的自动曝光】python实现-附ChatGPT解析
1.题目 一个图像有 n 个像素点,存储在一个长度为 n 的数组 img 里, 每个像素点的取值范围[0,255] 的正整数。 请你给图像每个像素点值,加上一个整数 k (可以是负数),得到新图 newImg , 使得新图newImg 的所有像素平均值最接近中位值 128。 请输出这个整数 k。 输入描述 n …...
网工内推 | 运维工程师,CCNP认证优先,周末双休,多次调薪机会
01 驻场运维 职责描述: 1、驻场某大型汽车整车厂,配合客户完成网络相关(路由交换)的项目。 2、按照客户要求,与项目组配合共同完成项目前期调研,设计,规划,项目中期调试测试&#…...
LeetCode 1337. The K Weakest Rows in a Matrix【数组,二分,堆,快速选择,排序】1224
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
如何使用Spring提供的Retry
0、本例中使用的是 springboot-2.0.4.RELEASE,jdk1.8 1、导包。需要注意版本。2.0.0需要spring6和jdk17 <dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>1.3.4<…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...
宠物车载安全座椅市场报告:解读行业趋势与投资前景
一、什么是宠物车载安全座椅? 宠物车载安全座椅是一种专为宠物设计的车内固定装置,旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成,具备良好的缓冲性能,并可通过安全带或ISOFIX接口固定于车内。 近年来&…...
