简介: qt: proxy()代理探究

文章目录

  • 查看源码:
  • 问题起因:
  • 尝试分析:
  • 正确回答:
  • 系列地址:

查看源码:

qt中源码查阅可看到:

/*!\since 4.6\fn const QStyle *QStyle::proxy() constThis function returns the current proxy for this style.By default most styles will return themselves. Howeverwhen a proxy style is in use, it will allow the style tocall back into its proxy.
*/
const QStyle * QStyle::proxy() const
{Q_D(const QStyle);return d->proxyStyle;
}

问题起因:

在封装函数的时候,
int radius = proxy()->pixelMetric(PM_FrameRadius, opt, w); //为什么这里使用proxy()->会显示报错,没有匹配到的相应的函数
// int radius = DStyle::pixelMetric(PM_FrameRadius, opt, w);     //而下面的可以通过

尝试分析:

检索Qt帮助手册:pixelMetric;发现一共有如下QStyle–>QCommonStyle–>QProxyStyle (只有这三个,依次为重写上一个)

int QStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const

int QCommonStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const

int QProxyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const

int DStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const override;

正确回答:

然而,上面的分析实际上,并没有什么卵用,用下面一句话解决:

proxy()实际上就是返回它自己,相当于当前类的this指针;通过自己实际工程中的验证,也的确是这样这理解

其源码英文的注释翻译如下:

此函数返回此样式的当前代理。 默认情况下,大多数样式都会返回。 然而当使用代理样式时,它将允许样式回调它的代理.

系列地址:

QtExamples

欢迎 starfork 这个系列的 QT / DTK 学习,附学习由浅入深的目录。

qt之proxy()代理探究相关推荐

  1. Proxy代理 和 Reflect反射(反射的是obj)的概念

    1. Proxy代理 // 供应商(原始对象)let obj = {time:'2018-01-03',name:'net',_r: "123"}// 创建代理商,传入obj数据l ...

  2. es6的Proxy(代理)

    es6的Proxy(代理) Proxy可以监听对象身上发生了什么事情,并在这些事情发生后执行一些相应的操作.一下子让我们对一个对象有了很强的追踪能力,同时在数据绑定方面也很有用处 //代理: var ...

  3. 分布式系统——zabbix 用 onealert实现报警、agent主动模式、proxy代理

    实验环境 物理机: rhel 7.3系统--172.25.54.250 server1:rhel 7.3系统--172.25.54.1 server2:rhel 6.5系统--172.25.54.11 ...

  4. 关于Vue 3.0 的改进 Proxy 代理实现数据驱动视图

    Vue 3.0 中使用了 Proxy 对象代理进行拦截实现了数据绑定视图的驱动操作.弥补了vue2.0中的局限,比如属性删除增加监听.对数组基于下标的修改.长度变化等等. 参考一下网上流传的机制图 P ...

  5. 第十二节:ES6 Proxy代理 和 去银行存款有什么关系?

    ES:给开发者提供了一个新特性:Proxy,就是代理的意思.也就是我们这一节要介绍的知识点. 以前,ATM还没有那么流行的时候(暴露年纪),我们去银行存款或者取款的时候,需要在柜台前排队,等柜台工作人 ...

  6. vue跨域问题:proxy代理跨域

    前端跨域,本地跨域,vue项目跨域问题 疑问1: 前端开发中解决浏览器的跨域问题 (推荐阅读) 什么是跨域? 为什么要跨域? 解决"跨域"的五种常见方式: 1. JSONP 2. ...

  7. Proxy(代理,拦截器),Reflect(反射)

    Proxy(代理,拦截器),Reflect(反射) Proxy: 代理: var duixaing = {"name":"小胖","age" ...

  8. vue-cli、脚手架创建、eslint、alias别名配置、proxy代理配置、axios、scoped、穿透、媒体查询、12栅格、动态rem、1px边框、移动端事件、300ms延迟问题(六)

    vue-cli的使用 现在使用前端工程化开发项目是主流的趋势,也就是说,我们需要使用一些工具来搭建vue的开发环境.一般情况下我们都会选择使用webpack进行项目的构建,在这里我们直接使用vue官方 ...

  9. proxy代理解决跨域问题

    使用proxy代理方式解决跨域问题 首先,了解一下什么是什么跨域,为什么会出现跨域问题? 每个浏览器的URL由协议.域名.端口号:我们可以看到下面表格的一些测试URL: URL地址 协议 域名 端口号 ...

最新文章

  1. ASP.NET之对称算法加密
  2. python正则表达式指南_Python正则表达式指南
  3. boost::mpl模块实现list相关的测试程序
  4. Fegion-3覆写Fegion的默认配置及Fegion的日志
  5. servletcontext 使用解析
  6. 从零开始编写自己的C#框架(1)——前言
  7. Mysql_mysql多个TimeStamp设置
  8. [转载] python中callable_Python callable() 函数
  9. vm.$nextTick( [callback] )用法
  10. 2022Adobe全套资源|PS PR AE
  11. Python自动化测试之PO模式
  12. 网页打开慢,甚至突然打不开?图片刷新不出来?多半是DNS的问题!
  13. 发散阅读、拓宽思路【PageRank、Tf-Idf、协同过滤、分布式训练、StyleTransfer、Node2vec】
  14. boot版本是什么 cent os_Cent OS 7系统目录结构
  15. 计算机优质书籍搜集(持续更新)
  16. golang web 服务器 request 与 response 处理
  17. 正则表达式匹配仅包含某些字符或者包含某些字符
  18. 农行计算机类笔试好过吗,2020中国农业银行招聘笔试要多少分才能进入面试?...
  19. 野火电机+CUBEMX——直流有刷电机的实现
  20. 数据分析04-朴素贝叶斯

热门文章

  1. 【BZOJ3091】城市旅行
  2. NILM论文 ——BERT4NILM
  3. 红利期,搭建私域的重要性
  4. 每日10行代码169:使用xlwings修改excel格式,设置中国式报表
  5. Cesium加载纯色背景
  6. 台达变频器vfb—d参数表_台达变频器CP2000参数表手册.pdf
  7. 华为云会议到底能做什么?一张图让你了解华为云会议!
  8. 但打不开 固态硬盘 插电脑上 能识别_硬盘无法识别修复恢复
  9. 服务器就老老实实当服务器
  10. python学习——POP3收取邮件