QML中继器:父/子与所有权

时间:2012-07-01 08:43:25

标签: qt parent parent-child qml

任何人都可以帮助我澄清QML Repeater docs首先说的是什么

  

“由Repeater实例化的项目按顺序插入,作为Repeater父项的子项。”,

然后

  

“注意: Repeater项目拥有它实例化的所有项目。删除或动态销毁由Repeater创建的项会导致不可预测的行为。“?

QML中的可视对象的子/父关系和所有权是否相同?

1 个答案:

答案 0 :(得分:7)

QtQuick中的对象父(所有权)和可视父级不同。对象父级在创建时设置,永远不会更改。可以通过“父”属性随时更改可视父级。

Repeater创建委托并为其自身设置所有权,并为其父级设置可视父级。换句话说,Repeater拥有代表,但将视觉呈现留给其父级(在大多数情况下,是一个定位器)。

Qt 5文档正在这方面进行改进。这是一个片段(Qt 5 doc快照最近没有更新 - 这是来自源代码):

  

QML应用程序中有两种不同的父母   使用Qt Quick。第一种是所有权 - 父母(也称为   确定对象生存期语义的QObject父级。该   第二种是视觉父母,它确定画布上的位置   绘制一个项目,以及某些属性(例如,不透明度)   适用于视觉儿童。)

     

在几乎所有情况下,视觉父母都是相同的   所有权父母。请参阅有关Visual Parentfor的文档   关于该主题的更深入的信息。

不幸的是,“Visual Parent”主题尚未编写。