使用d和q指针是为了二进制兼容,更新dll动态库时,老版本不需要重新编译机可以正常运行。

Q_D是宏定义,如下所示,
#define Q_D(Class) Class##Private * const d = d_func()
假定类名为A,通过d_func()返回APrivate的指针。

定义使用Q_D类
.h文件:
class ProjectPrivate;
Class Project : publci QObject
{
    //xxx
protected:
    //定义无需释放的指针
    QScopedPointer<ProjectPrivate> d_ptr;    
}

.cpp文件:
Project::Project(QObject *parent):QObject(parent), d_ptr(new ProjectPrivate())
{
    Q_D(Project);
    d.q_ptr=this;
    //xxx
}

定义Q_Q类
.h文件:
class ProjectPrivate : publci QObject
{
    //xxx
protected:
    Project * q_ptr;
    //xxx
}

这样,Q_D可以获取d变量执行类APrivate
Q_Q可以获取q变量指向类A

Qt中Q_D和Q_P的作用相关推荐

  1. Qt中Q_D宏及d指针

    原文标题:d指针在Qt上的应用及实现 原文链接:http://blog.csdn.net/rabinsong/article/details/9474859 正文: Qt为了使其动态库最大程度上实现二 ...

  2. QT中QDebug的使用

    QT中QDebug的使用 QDebug作用 使用前提 使用方法 方法1 类似c++的cout函数 方法2 构造函数直接引入参数 2.1 字符串拼接 2.2 格式化输出 参考博客 QDebug作用 qD ...

  3. Qt中exec函数的作用

    Qt中的exec()方法到处可见,例如: QCoreApplicaton::exec()  QApplication::exec() QDialog::exec() QThread::exec() Q ...

  4. QT中的D指针与Q指针

    了解QT中引入D指针的初衷前需要了解下二进制兼容 1. 什么是二进制兼容 二进制兼容是针对动态链接库而言的,如果你的源代码已经编译成为可执行文件了,其中你调用了一些动态库,后来你为这个动态库进行了更新 ...

  5. Qt中的 Size Hints 和 Size Policies

    sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...

  6. QT 中 关键字讲解(emit,signal,slot)以及使用

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

  7. Qt中的模型视图设计模式

    文章目录 1 初探Qt中的模型视图设计模式 2 模型视图中的索引 3 模型中的数据组织方式初探 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离. 模型 ...

  8. Qt中的QLabel组件

    文章目录 1 QLabel组件 1.1 QLabel简介 1.2 图片自适应 QLabel 的大小 1 QLabel组件 1.1 QLabel简介 QLabel组件: QLabel用于显示一个提示性的 ...

  9. 【Qt】 Qt中实时更新UI程序示例

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 实时更新UI(非信号与槽) 04. 实时更新UI(信号与槽) 05. 源码下载 06. 附录 01. 概述 Qt在运行时会 ...

最新文章

  1. Linux SSH无交互式访问配置
  2. 史上比较用心的纯代码实现 AutoLayout
  3. leetcode 464. Can I Win | 464. 我能赢吗(博弈论,动态规划)
  4. 西门子plm_西门子的Teamcenter、TIA Portal、NX MCD是如何结合在一起的
  5. 卡方检验检验水准矫正_【2008.】趋势性卡方检验专题讨论
  6. python元编程_python元编程详解(3)
  7. excel 两列数据怎么把组合的可能全部做出来?
  8. 哈工程816计算机专业考研资料,哈尔滨工程大学计算机科学与技术学院816计算机专业基础综合(自命题①数据结构,②计算机组成原理)历年考研真题汇编.pdf...
  9. 序列化(串行化)- 使用BinaryFormatter进行序列化
  10. Redmi K30S更多细节曝光:骁龙865加持 提供多款配色
  11. python计算两字符串中的位置_从Python中的字符串中获取两个字符
  12. 计算机网络参数怎么看,电脑显示器参数详解 看完秒懂! 显示器参数怎么看?...
  13. ubuntu从命令打开终端
  14. iOS应用程序瘦身的静态库解决方案
  15. Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制
  16. 钉钉、微信产品大PK,基因已经决定了结果
  17. Java与C++的区别
  18. VMware10安装CentOS6.7
  19. EXCEL之画带数据点的折线图只有点没有线
  20. Python打包出现 failed to execute script xxx解决方法

热门文章

  1. 三星note5 android 7,国行三星note5安卓7.0降级6.0刷机包
  2. 锐捷端口安全实验配置
  3. Java虚拟机(一)Java虚拟机初步了解
  4. SQL server数据库安装包下载
  5. STM32 高级定时器周期、频率、占空比、对外输出电压详解
  6. Chromium WebView
  7. CSDN博客写作编辑器如何使用?
  8. excel数据分析实战——销售额目标达成分析
  9. 数据结构之字符串插入操作
  10. 物联网卡这样设置一下上网全程4G!建议收藏!