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

Qt之QObject

简介

QObject是qt中所有对象的基类,也是信号槽的基础

结构

QObject
«Abstract»
QObjectData
QObjectPrivate

QObjectData:作为pimpl的抽象类
QObject中包含实现类的指针

protected:QScopedPointer<QObjectData> d_ptr;

QObjectData中包含指向QObject的指针

public:QObject *q_ptr;

QObject QObjectData相互获取(也就是具体对象指针与具体对象的实现指针)是通过qglobal.h中定义的Q_DECLARE_PRIVATEQ_DECLARE_PUBLIC
Q_DECLARE_PRIVATE在接口类中使用,用于定义获取具体实现类的指针,以及声明实现类为友元

#define Q_DECLARE_PRIVATE(Class) \inline Class##Private* d_func() \{ Q_CAST_IGNORE_ALIGN(return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr));) } \inline const Class##Private* d_func() const \{ Q_CAST_IGNORE_ALIGN(return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr));) } \friend class Class##Private;

Q_DECLARE_PUBLIC在具体实现类中使用,用于定义获取具体类的指针以及声明接口类为友元

#define Q_DECLARE_PUBLIC(Class)                                    \inline Class* q_func() { return static_cast<Class *>(q_ptr); } \inline const Class* q_func() const { return static_cast<const Class *>(q_ptr); } \friend class Class;

在连接到成员函数指针时,使用的是模板,其定义在qobjectdefs_impl.h中


http://www.mrgr.cn/news/53606.html

相关文章:

  • 「数学::快速幂」矩阵快速幂运算|快速斐波那契数列 / LeetCode 509(C++)
  • 自学java之自查自用资料
  • 银行客户贷款行为数据挖掘与分析
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • react的state是一张快照
  • 570,至少有5名直接下属的经理
  • Java并发编程深度解析:从基础到实战
  • Shades of Gray 算法
  • 问:MySQL数据库存储引擎及对应的锁有哪些?
  • ​AI Sketchnotes Generator——解锁创意表达的新方式
  • 83.【C语言】数据结构之顺序表的尾部插入和删除
  • C语言 | Leetcode C语言题解之第493题翻转对
  • [实时计算flink]DataStream连接器设置方法
  • 骑砍霸主MOD天芒传奇Ⅱ·前传-序章
  • Cuda By Example - 8 (性能测量)
  • ChatGPT的150个角色提示场景实测(17)营养师
  • 一天认识一个硬件之路由器
  • MobaXterm 中文乱码
  • 22 linux 进程管理进程间通信
  • 【JAVA毕业设计】基于Vue和SpringBoot的图书个性化推荐系统
  • pip安装sentence-transformers时的一些报错记录以及Python汉字转拼音cleverdeng/pinyin.py程序的调整处理
  • 高效实现Python机器学习:超参数优化中的网格搜索与随机搜索详解
  • 城市发展指数-基于滴滴平台数据测算
  • C++ 数组、递归两种方式实现二分查找
  • 安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析
  • Python无监督学习中的聚类:K均值与层次聚类实现详解