QML:获取 QObject 父级

cma*_*t85 6 qt qobject qml qt5 qtquick2

QObjectQML 引入了与可视化树(QtQuick 场景图)分离的所有权 ( ) 树。

  • parent返回视觉父级。
  • children返回视觉儿童。
  • data返回QObject孩子们。

但是我如何访问QObject父级呢?

仅供参考,我打算动态创建和销毁包含自定义类型的嵌套布局,因此我需要管理树QObject- 仅使用可视树将导致“错误”对象在重新设置父级然后删除后消失。

小智 2

如果你实际上不知道该项目的父项,我认为你不进入 C++ 就无法找到答案。如果您只想更改项目的QObject父级,则应该能够在 QML 中通过将其添加到data其新父级的属性来实现。(如果适用的话,这也会更改其视觉父级。)

引用Qt Quick Concepts文档:

出于内存管理的目的,分配给项目的数据属性的任何对象都会成为其 QObject 层次结构中该项目的子项。此外,如果添加到 data 属性的对象属于 Item 类型,它也会被分配给 Item::children 属性,并成为视觉场景层次结构中该项目的子项。(大多数 Qt Quick 层次结构抓取算法,尤其是渲染算法,仅考虑视觉父层次结构。)