Qt:parent参数
2016-01-21 14:54
176 查看
几乎所有的Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它赋值也没有问题。那么,这个参数到底是干什么用的呢?
这个参数指定了组件的父组件。
1.对于一个对话框来说,对话框一般是不作为顶层容器出现的,因此在任务栏上一般是没有对话框的位置的。怎么指定这个对话框不是顶层容器呢?有父组件的组件不就不是顶层容器了吗?因此,只要你指定对话框的parent属性,任务栏就不会出现它的身影。当然,如果你不指定,这个对话框就成为顶层容器了,任务栏会给它留个位置的——利用这个特性,就可以实现特殊对话框可以在任务栏出现的效果,比如“关于”对话框的出现。
2.另外当父组件delete时,Qt可以保证所有子组件——也就是具有parent属性的所有组件——都会被正确的delete掉。这是Qt能够帮助我们管理一部分内存的原因所在。Qt是通过遍历parent属性来防止了这一部分内存泄漏的。因此,必要情况下还是不要忘记设置这个parent属性。当然,如果你不声明这个属性,当整个程序关闭时,操作系统会回收内存——因此我们所说的内存泄漏一般是指我们自己写的应用程序的内部,而不会影响到整个操作系统——当然,如果你实现太可恶,操作系统也会受不了自动关掉你的程序的:-)
本文出自 “豆子空间”
博客,请务必保留此出处http://devbean.blog.51cto.com/448512/214166
这个参数指定了组件的父组件。
1.对于一个对话框来说,对话框一般是不作为顶层容器出现的,因此在任务栏上一般是没有对话框的位置的。怎么指定这个对话框不是顶层容器呢?有父组件的组件不就不是顶层容器了吗?因此,只要你指定对话框的parent属性,任务栏就不会出现它的身影。当然,如果你不指定,这个对话框就成为顶层容器了,任务栏会给它留个位置的——利用这个特性,就可以实现特殊对话框可以在任务栏出现的效果,比如“关于”对话框的出现。
2.另外当父组件delete时,Qt可以保证所有子组件——也就是具有parent属性的所有组件——都会被正确的delete掉。这是Qt能够帮助我们管理一部分内存的原因所在。Qt是通过遍历parent属性来防止了这一部分内存泄漏的。因此,必要情况下还是不要忘记设置这个parent属性。当然,如果你不声明这个属性,当整个程序关闭时,操作系统会回收内存——因此我们所说的内存泄漏一般是指我们自己写的应用程序的内部,而不会影响到整个操作系统——当然,如果你实现太可恶,操作系统也会受不了自动关掉你的程序的:-)
本文出自 “豆子空间”
博客,请务必保留此出处http://devbean.blog.51cto.com/448512/214166
相关文章推荐
- PyQt学习笔记-开端篇 信号和槽 signal slot
- 搭建Qt界面的OpenCV开发环境
- Halcon C++混合编程学习之Qt 实现检测焊接点
- [OpenCV] -- win7下配置OpenCV的Qt开发环境
- qt 上下页布局与代码规范
- QT中event事件机制与signal关系
- 性能分析工具AQTime
- qt 声音
- 什么是Qt的代理QItemDelegate_Spin Box Delegate Example例子分析
- ubuntu安装Qt5
- Qt之自定义界面(实现无边框、可移动)
- Qt之自定义界面(实现无边框、可移动)
- QTP中action使用,包括多action复用(转)
- QT 的点点滴滴之容器
- Qt学习2
- (Qt学习1)Qt环境搭建
- Qt学习之路(4):初探信号槽
- qt俄罗斯方块 可以使用 (一)
- qt QString用法
- MQTT协议简记