QML绑定到数组元素

joh*_*ers 8 qt qml qtquick2

width在QML上有一个属性,该属性Rectangle是基于另一个具有id mainwindow和以下数组属性之一的Rectangle设置的mainwindow:

width: mainwindow.width/mainwindow.numColsPerRow[positionRow]

这在我的矩形设置时有效; 也就是说,数组中的元素numColsPerRow是正确的.

但是,在设置此Rectangle之后,如果我更改此Rectangle 内numColsPerRow的值width没有任何效果.

QML不允​​许属性绑定到数组元素吗?

The*_*roo 17

调用时,var JS数组中的值不会发出和"更改"信号:

my_array  [n] = value;
Run Code Online (Sandbox Code Playgroud)

为了将数组属性通知给使用它的每个代码,你必须使用这个技巧:

var tmp =  my_array;
tmp [n] = value; // you can do multiple changes, and also push/splice items
my_array = tmp;
Run Code Online (Sandbox Code Playgroud)

这样,QML引擎将发出信号,并且将通知和更新使用my_array的其他绑定.

PS:你不能使用ListModel,因为你无法使用像数组或map这样的键来获取模型中的特定项.模型旨在与MVC视图一起使用......