ser*_*zer 16 qt repeater element qml qt-quick
你能告诉我下面的代码有没有办法改变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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jul*_*usG 21
您必须将属性添加到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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样更改属性:
onPropertyChange: {
mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change
}
Run Code Online (Sandbox Code Playgroud)
JuliusG 的答案是正确使用itemAt. 但是不需要将其设置为内部子项中属性的目标(在您的情况下为 Image)。您可以按原样使用您的代码,而不是
onPropertyChange: { mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change }
Run Code Online (Sandbox Code Playgroud)
用这个:
onPropertyChange: { mmm.itemAt(index).children[0].x = newValue //the index defines which rectangle you change }
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。