任何人都可以帮助我澄清QML Repeater docs首先说的是什么
“由Repeater实例化的项目按顺序插入,作为Repeater父项的子项。”,
然后
“注意: Repeater项目拥有它实例化的所有项目。删除或动态销毁由Repeater创建的项会导致不可预测的行为。“?
QML中的可视对象的子/父关系和所有权是否相同?
答案 0 :(得分:7)
QtQuick中的对象父(所有权)和可视父级不同。对象父级在创建时设置,永远不会更改。可以通过“父”属性随时更改可视父级。
Repeater创建委托并为其自身设置所有权,并为其父级设置可视父级。换句话说,Repeater拥有代表,但将视觉呈现留给其父级(在大多数情况下,是一个定位器)。
Qt 5文档正在这方面进行改进。这是一个片段(Qt 5 doc快照最近没有更新 - 这是来自源代码):
QML应用程序中有两种不同的父母 使用Qt Quick。第一种是所有权 - 父母(也称为 确定对象生存期语义的QObject父级。该 第二种是视觉父母,它确定画布上的位置 绘制一个项目,以及某些属性(例如,不透明度) 适用于视觉儿童。)
在几乎所有情况下,视觉父母都是相同的 所有权父母。请参阅有关Visual Parentfor的文档 关于该主题的更深入的信息。
不幸的是,“Visual Parent”主题尚未编写。