Привязка QML к элементу массива
у меня есть width
свойство на QML Rectangle
который установлен на основе другого прямоугольника с идентификатором mainwindow
и одно из свойств массива mainwindow
:
width: mainwindow.width/mainwindow.numColsPerRow[positionRow]
это работает во время настройки моего прямоугольника; то есть элемент внутри массива numColsPerRow
правильно участвует.
однако после установки этого прямоугольника, если я изменю значения внутри numColsPerRow
на width
этого прямоугольника не имеет никакого эффекта.
тут QML не разрешает привязки свойств к элементам массива?
1 ответов
значения в массиве var JS не излучают и "изменяют" сигнал при вызове:
my_array [n] = value;
чтобы получить свойство массива, уведомляемое каждому коду, используя его, вы должны использовать этот трюк:
var tmp = my_array;
tmp [n] = value; // you can do multiple changes, and also push/splice items
my_array = tmp;
таким образом, QML engine будет излучать сигнал, а другие привязки с помощью my_array будут уведомлены и обновлены.
PS: вы не можете использовать ListModel для этого, потому что у вас не будет способа получить определенный элемент в модели с помощью ключа, такого как array или map. Модели предназначены для использования с представлением MVC...