QML 从可视树(QtQuick 场景图)中引入了一个单独的所有权 ( QObject
) 树。
parent
返回视觉父级。children
返回视觉孩子。data
返回QObject
孩子们。
但是我如何访问QObject
父级?
仅供参考,我打算动态创建和销毁包含自定义类型的嵌套布局,因此我需要管理QObject
树 - 仅使用可视树将导致“错误”对象在重新设置父级然后删除后消失。
如果您实际上不知道该项目的父项,我认为您不进入 C++ 就无法找到。如果您只想更改项目的QObject
父项,您应该可以在 QML 中通过将其添加到data
其新父项的属性来执行此操作。(如果适用,这也将更改其视觉父级。)
引用Qt Quick Concepts文档:
任何分配给项目的数据属性的对象都将成为其 QObject 层次结构中的项目的子项,用于内存管理。此外,如果添加到 data 属性的对象是 Item 类型,它也被分配给 Item::children 属性,并成为视觉场景层次结构中项目的子项。(大多数 Qt Quick 层次结构爬取算法,尤其是渲染算法,只考虑可视父层次结构。)