Qt.binding函数,好像不可以写在for循环中:上代码
错误代码:
import QtQuick 2.7
import QtQuick.Controls 1.5
Item {
property var objList1: []
property var objList2: []
id: root
Component {
id: comp
QtObject {
property int iD
property int testVar : -1
onTestVarChanged: {
console.debug(iD,testVar)
}
}
}
function bind(i) {
objList2.testVar = Qt.binding(function(){
return objList1.testVar
})
}
Component.onCompleted: {
var i;
for(i = 0; i < 5; i++) {
objList1.push(comp.createObject(root))
objList1.iD = i
}
for(i = 0; i < 5; i++) {
objList2.push(comp.createObject(root))
objList2.iD = i + 100
objList2.testVar = Qt.binding(function(){
return objList1.testVar
})
//bind(i)
}
objList1[0].testVar = 1
objList1[1].testVar = 2
objList1[2].testVar = 3
objList1[3].testVar = 4
objList1[4].testVar = 5
}
}
复制代码
正确代码:
import QtQuick 2.7
import QtQuick.Controls 1.5
Item {
property var objList1: []
property var objList2: []
id: root
Component {
id: comp
QtObject {
property int iD
property int testVar : -1
onTestVarChanged: {
console.debug(iD,testVar)
}
}
}
function bind(i) {
objList2.testVar = Qt.binding(function(){
return objList1.testVar
})
}
Component.onCompleted: {
var i;
for(i = 0; i < 5; i++) {
objList1.push(comp.createObject(root))
objList1.iD = i
}
for(i = 0; i < 5; i++) {
objList2.push(comp.createObject(root))
objList2.iD = i + 100
//objList2.testVar = Qt.binding(function(){
// return objList1.testVar
//})
bind(i)
}
objList1[0].testVar = 1
objList1[1].testVar = 2
objList1[2].testVar = 3
objList1[3].testVar = 4
objList1[4].testVar = 5
}
}
复制代码
请问这能说明什么问题?Qt.binding是静态绑定?