4

谁能帮我澄清QML Repeater 文档首先说的意思

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

进而

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

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

4

1 回答 1

7

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

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

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

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

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

不幸的是,“Visual Parent”主题还没有写完。

于 2012-07-01T23:34:08.910 回答