关于setObjectName的思考

今天,重新温习了一下以往Qt4的书,并对一些基本的东西做了一个测试。

在测试的过程中发现一个问题,就是setObjectName()这个函数到底有什么作用,或者说是ObjectName本身有什么作用???

然后我就想了一下,回忆了一下创建控件的流程:

 QLabel *m_pLbl = new QLabel(this);m_pLbl->setObjectName("testLbl");

就冲着这个流程我想了一下,介绍一下我的理解:

QLabel 是一个总体的抽象;m_pLbl是抽象的一个实例;而ObjectName相当于给这个实例命了个名字。——唯一标识符

类比一下:人->生了个孩子->给孩子起名。

起完名之后,就可以通过孩子的名字对孩子进行各种操作。

但是中间有一个问题,就是,如果创建了不同的label,其实例化的名字也是不同的,为什么不能用实例化的名字当做唯一标识符呢???

比较直观的理解就是,这个指针的名字相当于是内部约定的代号,比如说代码内部可以通过m_pLbl来对这个label进行相应的操作;但是如果外界想要访问这个label,则无法通过指针名m_pLbl来进行访问,因为这个名字仅仅限于内部使用,对于外部的人来说,如果想要访问这个控件,必须要知道这个控件的ObjectName,这个ObjectName相当于是一个键值对的“键”,其对应的“值”就是这个label,一个完整的映射关系。

主要是用于对于外界想要访问这个控件——比如说设置样式表,别人不知道这个控件的名字,只有设置了ObjectName才能找到其对应的控件。

就比如说,这个孩子,小名叫“狗子”,就是这里面的m_pLbl,自己家里人知道他叫“狗子”,所以只用小名就能找到他。但是某一天突然来了一个外面的人,要找他,通过“狗子”是无法找到这个人的,因为没有“一一对应”的关系,这个时候,就需要给他设置一个唯一标识符,如身份证号,如唯一的大名。

总结:ObjectName主要是用于外界来访问内部的控件成员的,如果外界不需要访问这个成员,则理论上无需设置它的ObjectName。

关于setObjectName的思考相关推荐

  1. 关于python导入模块和package的一些深度思考

    背景 在python中有导入模块和导入package一说,这篇文章主要介绍导入模块和package的一些思考. 首先什么是模块?什么是package? 模块:用来从逻辑上组织python代码(变量,函 ...

  2. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义

    米老师按:觉得值得讨论的小文!我还要认真地想一想 主题:围绕职责链设计模式-计算收费有效时间博客展开讨论 参与人: 讨论时间: 讨论内容 这次讨论主要分为以下几点: 一.职责链模式应用于机房收费系统计 ...

  3. 由Node.js事件驱动模型引发的思考

    引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来. 什么是 ...

  4. 看了极光推送技术原理的几点思考

    看了极光推送技术原理的几点思考 分类: android2012-11-26 20:50 16586人阅读 评论(18) 收藏 举报 目录(?)[+] 移动互联网应用现状 因为手机平台本身.电量.网络流 ...

  5. C++ 从双重检查锁定问题 到 内存屏障的一些思考

    文章目录 1. 问题描述 2. DCLP 的问题 和 指令执行顺序 2.1 Volatile 关键字 2.2 C++11 的内存模型 3. C++11内存模型 解决DCLP问题 3.1 内存屏障和获得 ...

  6. 关于大型网站技术演进的思考(五)--存储的瓶颈(5)

    上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种影响,第二个问题就是水平拆分的扩容问题.这两个问题 ...

  7. 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

    尽管我并非艺术出生,既没有任何设计基础,又没有较高艺术涵养,也深谙在短时间内创造一定艺术造诣并非易事,但是既然当初选择从事网站前端开发,我的目光不能仅停留在前端代码上.作为一名志向在前端领域发展的人员 ...

  8. 从0开始搭建编程框架——思考

    需求来源于问题.(转载请指明出于breaksoftware的csdn博客) 之前有个人做前端开发的同学在群里问"C语言能做什么?能写网页么?",然后大家就开始基于这个问题展开争辩. ...

  9. 以金山界面库(openkui)为例思考和分析界面库的设计和实现——代码结构(完)

    三年前,准备将金山界面库做一个全面的剖析.后来由于种种原因,这个系列被中断而一直没有更新.时过境迁,现在在windows上从事开发的人员越来越少,关注这块的技术的朋友也很少了.本以为这系列也随着技术的 ...

最新文章

  1. 前端路由以及浏览器回退,hash history location
  2. 安卓开发之Handler、HandlerThread学习篇
  3. 最高科技——疯狂的前缀和
  4. java开发学不会_JAVA学不会,快期末了,怎么办?
  5. 关于所谓的穷人富人幸福论
  6. echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...
  7. Oracle修改globalname,oracle修改global_name和service_name
  8. WM_TIMER消息在线程被阻塞时的系统处理
  9. 如何使用命令强制DC的复制
  10. python 全局变量使用报错没有定义_python跨文件使用全局变量的实现
  11. 深入理解 switch....case 中的case
  12. Javascript第六章基本数据类型和引用数据类型第三课
  13. python命令行tab实例小妙招
  14. StringRedisTemplate和RedisTemplate区别和联
  15. python book.save_Python之操作excel
  16. 约束最优化方法之最优性条件
  17. 史上最详细的LXR安装介绍
  18. 立波软件管家:方便管理安卓手机应用、应用搬家、快速摇摇卸载应用、应用备份(souapp.com搜应用网推荐)
  19. fatal: destination path '.' already exists and is not an empty directory. 错误及解决办法
  20. 地铁线路图显示效果php,基于HTML5制作在线上海地铁图

热门文章

  1. 寻找最称手的思维导图软件(思维导图大比拼)
  2. strong和weak引用的讲解
  3. 计算机原理中的二进制除法,多字节除法--汇编实现原理
  4. Android 音频驱动分析--A10
  5. 3.查询所有同学的学号、姓名、选课数、总成绩
  6. 【从RL到DRL】深度强化学习基础(五)离散控制与连续控制——确定策略梯度方法(DPG)、使用随机策略进行连续控制
  7. linux 基准测试,linux 性能测试之基准测试用具
  8. 【术语篇】影响PV的因素有哪些
  9. jquery 添加插入元素技巧前面和后面
  10. 机器学习基础(五):计算学习理论(PAC学习、有限假设空间、VC维、Rademacher复杂度、稳定性)