5

QML 从可视树(QtQuick 场景图)中引入了一个单独的所有权 ( QObject) 树。

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

但是我如何访问QObject父级?

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

4

1 回答 1

2

如果您实际上不知道该项目的父项,我认为您不进入 C++ 就无法找到。如果您只想更改项目的QObject父项,您应该可以在 QML 中通过将其添加到data其新父项的属性来执行此操作。(如果适用,这也将更改其视觉父级。)

引用Qt Quick Concepts文档:

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

于 2014-01-21T17:27:41.510 回答