Qt学习之parent参数
来源:互联网 发布:python串口数据采集 编辑:程序博客网 时间:2024/04/29 05:19
这是一篇很简单的文章,仅仅是用来说明一下一个参数的作用,因此我把它写成了tip,而不是接下来的17.
程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题。于是,稍微偷懒一下,就会不自觉的忽略了这个参数。那么,这个参数到底是干什么用的呢?
其实,这个参数有很多用处。就像它的名字一样,这个参数指定了组件的父组件。对于一个对话框来说,对话框一般是不作为顶层容器出现的,因此在任务栏上一般是没有对话框的位置的。怎么指定这个对话框不是顶层容器呢?有父组件的组件不就不是顶层容器了吗?因此,只要你指定对话框的parent属性,任务栏就不会出现它的身影。当然,如果你不指定,这个对话框就成为顶层容器了,任务栏会给它留个位置的——利用这个特性,就可以实现特殊对话框可以在任务栏出现的效果,比如“关于”对话框的出现。
程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题。于是,稍微偷懒一下,就会不自觉的忽略了这个参数。那么,这个参数到底是干什么用的呢?
其实,这个参数有很多用处。就像它的名字一样,这个参数指定了组件的父组件。对于一个对话框来说,对话框一般是不作为顶层容器出现的,因此在任务栏上一般是没有对话框的位置的。怎么指定这个对话框不是顶层容器呢?有父组件的组件不就不是顶层容器了吗?因此,只要你指定对话框的parent属性,任务栏就不会出现它的身影。当然,如果你不指定,这个对话框就成为顶层容器了,任务栏会给它留个位置的——利用这个特性,就可以实现特殊对话框可以在任务栏出现的效果,比如“关于”对话框的出现。
另外比较通用,也是很重要的作用是,parent参数指明了组件的父组件,这样,当父组件delete时,Qt可以保证所有子组件——也就是parent指针指向这个组件的所有组件——都会被正确的delete掉。这是Qt能够帮助我们管理一部分内存的原因所在。Qt是通过遍历parent属性来防止了这一部分内存泄漏的。因此,必要情况下还是不要忘记设置这个parent属性。当然,如果你不声明这个属性,当整个程序关闭时,操作系统会回收内存——因此我们所说的内存泄漏一般是指我们自己写的应用程序的内部,而不会影响到整个操作系统——当然,如果你实现太可恶,操作系统也会受不了自动关掉你的程序的:-)
本文转载自http://devbean.blog.51cto.com/448512/214166
2 0
- Qt学习之parent参数
- Qt学习之路(tip): parent参数
- Qt学习之路(tip): parent参数
- Qt学习之路(tip): parent参数
- Qt 学习之路(tip): parent 参数
- Qt学习之路(tip): parent参数
- Qt学习之路(tip): parent参数
- QT之GUI学习笔记--parent参数
- [QT] parent参数
- Qt parent参数作用
- Qt中的parent参数
- Qt:parent参数
- QT的学习(2)-构造函数的parent参数
- Qt构造函数parent参数
- Qt中parent参数的作用
- Qt内存管理之parent指针
- parent参数
- 关于QT构造函数参数parent的解释
- Javascript_备忘录3
- -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0x7fa5216589d0
- Kernel如何解析u-boot传过来的参数
- Java之Pcap文件解析(三:解析文件)
- String 中== 、equal和null
- Qt学习之parent参数
- ConcurrentHashMap解析
- UIView于CALayer的主要的关系
- FastDFS+nginx---(二)安装配置测试
- 关于嵌入式学习和开发需要注意的十三大法则
- 2016-01-10 smali/baksmali v2.1.1
- SSH隧道浅析
- Fragment实现懒加载
- 编译错:The method createSqlQuery(String, List<Object>) is ambiguous for the type