QML:在 Repeater 上调用 itemAt 返回 null
2016-09-29
3268
我的代码:
840506562
我获取此错误消息:
365374270
i找到
这篇文章
说该解决方案是使用
component.oncomponent.oncompleted
这样(只需插入
component.oncompleted
在文本对象中处理程序):
134985776
,但这会出现相同的错误。
有什么想法吗?
2个回答
rectRepeater
项目在您调用
itemAt(0)
时不会退出。
您应该在实例化
rectRepeater
时调用
itemAt
。
Window {
visible: true
width: 640
height: 480
Column {
Row {
Repeater {
id: rectRepeater
model: 3
Rectangle {
width: 30
height: 30
color: "red"
radius: 10
}
}
}
Row {
Repeater {
id: textrep
model: 3
Text {
}
}
}
Component.onCompleted: {
//Here all object are instantiated
for (var i = 0; i< textrep.count; i++){
textrep.itemAt(i).text = rectRepeater.itemAt(0).width
}
}
}
}
Konstantin T.
2016-09-29
我会选择条件绑定
Text {
text: rectRepeater.count > 0 ? rectRepeater.itemAt(0).width : 0;
}
一旦 rectRepeater 实际创建了至少一个委托,就会读取该委托的值。 即使 rectRepeater 的模型在某个时候再次变为空,或者索引 0 处的项目更改了其宽度,这种方法仍然有效
Kevin Krammer
2016-09-30