项目场景:
最近在写qml 的项目,有一个需求是通过按钮的点击进行界面的切换,选择使用界面的visible参数来进行控制界面的可见性,遇见一个关于Array的知识(坑)特此记录一下;
问题描述:
由于界面较多,选择定义了一个array,用来管理界面:
property var visibleArray: [true,false,false]
每一个子界面通过绑定数组的数据进行绑定:
MouseArea{
id:systemSetPage
x:30
y:30
width:808
height:500
// visible: choosedIndex == 2//可选择使用这种方式实现比较简单
visible: visibleArray[2]
}
通过调用函数进行切换:
//错误代码
function changeVisibleArray(index1){
for(var i=0;i<3;i++){
visibleArray[i] = false
}
visibleArray[index1] = true
}
函数调用能正常打印,但是界面不进行切换
解决方案:
修改整个数组:
function changeVisibleArray(index1){
console.log('dfhjkahjkdhag',index1)
var a = [false,false,false]
a[index1] = true
visibleArray = a
}
可正常进行界面切换.
原因分析:
个人初步分析是因为qml的数组对象是可变对象(参考python-可变对象),数组改变但是界面并不知情,导致不会改变