Как получить доступ к свойствам детей Repeater в QML?
Можете ли вы рассказать мне ниже, что есть способ изменить свойства элемента imgx. Мне нужно изменить значение imgx.x с помощью javascript. Или есть другой способ? Я ищу 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"
}
}
}
}
Ответы
Ответ 1
Вы должны добавить свойство к прямому ребенку Repeater (Rectangle в вашем случае) и установить его как цель для свойства во внутреннем дочернем элементе (изображение в вашем случае). Затем вы можете использовать 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
}
Ответ 2
Ответ JuliusG прав в использовании itemAt
. Но не обязательно устанавливать его как цель для свойства во внутреннем дочернем элементе (изображение в вашем случае). Вы можете иметь свой код так, как есть, а вместо
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 }
Надеюсь, поможет.