QT中的对象树与对象拥有权

QObjects 以对象树组织它们自己。当你创建一个QObject 以另一个对象作为其父对象时,这个QObject 被加入到其父对象的children()列表中,当父对象 对被删除时,其子对象也会被删除。实践表明这种组织方式非常适合GUI对象的特点与需要。举例来说,一个QShortcut (键盘快捷键)是其相关窗口的孩子,因此当用户关掉那个窗口时,这个快捷键也随之删 除了。

QWidget ,是所有屏幕可显示的一切事物的基类, 它扩展了这种父子关系。在这种关系下,孩子通常就是一个子窗口部件,也就是说,它被显示在父窗口的坐标系中,会因为父窗口的边界约束而被裁剪。举例来讲, 当应用程序关闭一个消息框时,消息框会被删除,消息框里的按纽与标签也会被随之删除,这正是我们所想的,因为按钮与标签是消息框的孩子。

你也可以亲自删除孩子对象,这些子对象会与其父对象脱离关系。举例来说,当用移除了一个工具栏,它导致应用程序删除这个QToolBar 对象,这时这个工具栏的父对象QMainWindow 察觉到了变化,会相应地重新配置其屏幕空间。

调试函数,QObject :dumpObjectTree ()与QObject ::dumpObjectInfo ()非常有用,当一个应用程序行为怪异,让你手足无措时,你应该想到 也许需要它们帮忙。

有了以上知识后,你再看到了某些代码只new 出来 一个对象,而不再delete 的做法,就会心平气和些 了。

来自:http://www.cppblog.com/yuanyajie/archive/2007/09/25/32854.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值