Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27771
  • 博文数量: 33
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-28 15:15
文章分类
文章存档

2015年(33)

我的朋友

分类: 嵌入式

2015-07-03 20:37:37

原文地址:QT 对象模型 作者:luozhiyong131


QObject 是以对象树的形式组织起来的。当你创建一个 QObject 对象时,会看到 QObject的构造函数接收一个 QObject 指针作为参数,这个参数就是 parent,也就是父对象指针。这相当于,在创建 QObject 对象时,可以提供一个其父对象,我们创建的这个 QObject 对象会自动添加到其父对象的 children() 列表。当父对象析构的时候,这个列表中的所有对象也会被析构。


QWidget 是能够在屏幕上显示的一切组件的父类。QWidget 继承自 QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。因此,它会显示在父组件的坐标系统中,被父组件的边界剪裁


Qt 引入对象树的概念,在一定程度上解决了内存问题

当一个 QObject 对象在堆上创建的时候,Qt 会同时为其创建一个对象树。不过,对象树中对象的顺序是没有定义的。这意味着,销毁这些对象的顺序也是未定义的。Qt 保证的是,任何对象树中的 QObject 对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的 children()列表中删除;如果有孩子,则自动 delete 每一个孩子Qt 保证没有 QObject 会被 delete 两次,这是由析构顺序决定的。
 
返回目录:Qt学习整理


阅读(214) | 评论(0) | 转发(0) |
0

上一篇:QT 对话框简介

下一篇:QT 资源文件

给主人留下些什么吧!~~