есть элемент DropBox с свойством currentIndex:
DropBox.qml
Item {
property int currentIndex: 0
Я использую его в другом элементе:
DropBox {
currentIndex: self.testDropBoxIndex
onCurrentIndexChanged: self.testDropBoxIndex = currentIndex
testDropBoxIndex описан так:
Q_PROPERTY(int testDropBoxIndex READ testDropBoxIndex WRITE setTestDropBoxIndex NOTIFY testDropBoxIndexChanged)
Все работает нормально, до тех пор, пока действия пользователя не приведут в вызову внутри DropBox:
onClicked: {
boxId.currentIndex = index
}
В c++ части вызывается setTestDropBoxIndex, но после этого изменение свойства testDropBoxIndex не приводит к обновлению currentIndex внутри DropBox.
Подскажите, как не терять биндинг свойства currentIndex с testDropBoxIndex, но и иметь возможность изменять его изнутри DropBox?
так напишите вместо boxId.currentIndex = index в onClicked self.testDropBoxIndex = index
DropBox - это базовый элемент, который может использоваться в нескольких экзеплярах для различных свойств, поэтому он не может внутри завязываться на какой-то свойство из контекста. Это свойство для него задается извне.
так пожалуйста, для этого вы и использовали биндинг, но зачем там же: onCurrentIndexChanged: self.testDropBoxIndex = currentIndex если у вас биндинг обратный? Ну и совет Анатолия по поводу проверки тоже нужно использовать, хотя бы для того, чтобы исключить неправильное циклическое связывание. Но в любом случае вы хотите менять testDropBoxIndex на который будет реагировать dropbox.currentIndex, ну так и меняйте его
Обсуждают сегодня