在qml中,使用JS数组,修改里面的值,不发出change信号。my_array [n] = value;
为了得到数组属性通知,你必须使用下面这个技巧
var tmp = my_array;
tmp [n] = value;//你可以做多个更改,也可以push/splice项目
my_array = tmp;
完整qml代码示例
import QtQuick 2.12
import 2.12
/*
演示qml数组如何绑定change变化
*/
Window {
visible: true
width: 640
height: 480
title: qsTr("演示qml数组如何绑定change变化")
property var testArray: new Array
onTestArrayChanged: {
("数组发生change ", testArray[0])
}
: {
("演示qml数组如何绑定change变化")
(1);
testArray[0] = 2;
("数组没有发生变化 testArray[0] = 2;")
var tmp = testArray;
tmp[0] = 3;
testArray = tmp;
("数组发生变化! testArray = tmp;")
}
}
log
qml: 数组发生change undefined
qml: 演示qml数组如何绑定change变化
qml: 数组没有发生变化 testArray[0] = 2;
qml: 数组发生change 3
qml: 数组发生变化! testArray = tmp;