我在QML width
上有一个Rectangle
属性,该属性是根据另一个ID为mainwindow
且其中一个数组属性为mainwindow
的Rectangle设置的:< / p>
width: mainwindow.width/mainwindow.numColsPerRow[positionRow]
这在我的矩形设置时有效;也就是说,数组numColsPerRow
中的元素正确参与。
但是,设置此Rectangle后,如果我更改numColsPerRow
内的值,则此Rectangle的width
没有任何效果。
QML是否不允许对数组元素进行属性绑定?
答案 0 :(得分:16)
var JS数组中的值不会发出和更改&#39;当你打电话时发出信号:
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引擎将发出信号,使用my_array的其他绑定将被通知和更新。
PS:你不能使用ListModel,因为你没有办法使用像数组或地图这样的键来获取模型中的特定项目。模型旨在与MVC视图一起使用...