你能告诉我下面的代码是否有任何改变imgx元素属性的方法。我必须使用javascript更改imgx.x值。或者还有其他方法吗?我搜索qt docs但没有帮助。感谢。
Row {
Repeater {
id:mmm
model : 10
Rectangle{
clip: true
width: 54
height: 80
color:"transparent"
Image {
id:imgx
//x:-160
//x:-105
//x:-50
x:0
source: "images/tarama_lights.png"
}
}
}
}
答案 0 :(得分:20)
您必须向Repeater的直接子项添加属性(在您的情况下为Rectangle),并将其设置为内部子项中的属性的目标(在您的情况下为Image)。然后,您可以使用mmm.itemAt(<index of the element>).<property> = value
。代码:
Repeater {
id:mmm
model : 10
Rectangle{
clip: true
width: 54
height: 80
color:"transparent"
property int imageX: 0 //adding property here
Image {
id:imgx
x: parent.imageX //setting property as the target
source: "images/tarama_lights.png"
}
}
}
然后您可以更改此属性:
onPropertyChange: {
mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change
}
答案 1 :(得分:3)
JuliusG的回答是正确的,使用itemAt
。但是不需要将其设置为内部子项中的属性的目标(在您的情况下为Image)。
您可以使用您的代码而不是
onPropertyChange: { mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change }
使用它:
onPropertyChange: { mmm.itemAt(index).children[0].x = newValue //the index defines which rectangle you change }
希望它有所帮助。