qt delete

1 Qt半自动的内存管理

Qt中已下情况new出的对象可以不用亲自去delete:
(1)QObject及其派生类的对象,如果其parent非0,则其parent析构时会析构该对象,除此之外,有些类的对象可以接收设置一些特别的标记,例如:
1) QWidget及其派生类的对象,可以设置Qt::WA_DeleteOnClose标志位(当close时会析构该对象)
2)QAbstractAnimation派生类的对象,可以设置QAbstractAnimation::DeleteWhenStopped
3)QRunnable::setAutoDelete()
4)MediaSource::setAutoDelete()

2 父子关系

在Qt中,每个QObject内部都有一个list,用来保存所有的children,还有一个指针,保存自己的parent。当它自己析构时,它会将自己从parent列表中删除,并且析构掉所有的children。
建立与解除

Q_INVOKABLE QObject::QObject(QObject)
  • 1

创建一个QObject对象时,如果指定了父对象,它就会将自己添加到父对象的 children 列表中

QObject::~QObject () [virtual]
  • 1

当一个QObject对象析构时,它会将自己从父对象的 children 列表中移除(parent非0的话)

void QObject::setParent ( QObject * parent )
  • 1

通过该函数,将自己从原父对象的children中删除,添加到新parent的children列表中
注:这三个函数都是通过一个内部私有函数来实现的,这就是

QObjectPrivate::setParent_helper(QObject *o)

【转】https://blog.csdn.net/xu1129005165/article/details/82348947

posted on   lydstory  阅读(86)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-02-19 PKCS11
2020-02-19 windows dll
2020-02-19 程序员等级
2020-02-19 书生
2020-02-19 航空661标准者
2020-02-19 听一听世界经典歌曲

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示