返回介绍

对象树和对象所有权

发布于 2019-10-04 14:58:09 字数 605 浏览 966 评论 0 收藏 0

QObject在对象树中组织它们自己。当你以另外一个对象作为
父对象来创建一个QObject时,它就被添加到父对象的children()
列表中,并且当父对象被删除的时候,它也会被删除。这种机制很好的适合了图形用户
界面应用对象的需要。例如,一个QAccel(键盘快捷键)是相关窗口的子对象,当用户
关闭该窗口的时候,这个快捷键也被删除了。

静态函数QObject::objectTrees()提供了访问当前存在的所有跟对象的方法。

QWidget,在屏幕上显示的任何东西的基类,扩展着父-子对象关系。一个子
对象通常就是一个子窗口部件,也就是说,它被显示在父对象的坐标系统中并且
在图象上由父对象的边界夹住。例如,当一个应用程序在一个消息框被关闭之后
删除这个消息框时,消息框的按钮和标签正如我们所想要的也被删除了,因为这些
按钮和标签都是消息框的子对象。

你也可以自己删除子对象,这样它们就会把它们自己从它们的父对象中移除。例如,
当用户移除工具条可以导致应用程序删除它的一个QToolBar对象,在这种情况
工具条的QMainWindow父对象会检测到这种变化并因此而重新构成屏幕空间。

当一个应用程序的看起来或者运行起来有些奇怪的时候,调试函数QObject::dumpObjectTree()
和QObject::dumpObjectInfo()是经常有用的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文