文档章节

Qt的父-子对象机制

无奈的初弦
 无奈的初弦
发布于 2014/05/10 22:46
字数 323
阅读 668
收藏 2

Qt的父子机制是在QObject中实现的。

当我们创建一个对象(控件,验证器或任何其他对象)的父对象时,父对象会添加该对象到它的子对象列表中。当父对象释放时,它会遍历它的子对象列表并一个个释放。而子对象自身也会释放它的子对象,这样重复,知道释放所有对象。这种父子机制极大的简化了内存管理,减少了内存泄露的危险。

唯有我们使用new创建的没有父对象的对象才需要我们调用delete来释放。

如果我们在释放父对象前先释放它的子对象,则Qt会自动从这个父对象的子对象列表中删除这个对象。     

对于控件,父对象还有额外的含义:子控件是显示在父控件中的。当我们释放父控件时,不仅要让子控件从内存中消失,还要让它从屏幕上消失。

很多布局函数,会在布局的时候,把控件的父对象设置好了


© 著作权归作者所有

下一篇: find_if
无奈的初弦
粉丝 2
博文 25
码字总数 8623
作品 0
海淀
程序员
私信 提问
【Qt笔记】对象模型

标准 C++ 对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI 界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Qt “扩展”了标...

大道无名
2016/07/29
57
0
从 Qt 的 delete 说开来

在C++中学习过程中,我们都知道: delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。 Qt作为C++的库,显然是不会违背C++的前述原则的。可是: 在Qt中,我们很...

晨曦之光
2012/05/08
918
0
安装事件过滤器(Installing Event Filters)

转自:http://blog.csdn.net/iamdbl/article/details/1630043 Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。 假设我们有一...

长平狐
2013/01/11
151
0
QT5:事件接受与忽略.

让我们首先来看一个例子: //CustomButton.h include <QWidget> include <QPushButton> include <QDebug> class CustomButton : public QPushButton { Q_OBJECT public: CustomButton(QWidget......

SHIHUAMarryMe
2016/04/02
187
0
QT 布局管理

狭义的说,QT的布局管理框架指的是以QLayoutItem/QLayout为基类的布局管理体系(应该说,对于QGraphicsSystem, 还有以QGraphicsLayoutItem/QGraphicsLayout为基类的一系列相关子类) 但是如...

鉴客
2011/10/01
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部