FANGYEFENG

Sep 03, 2024

qml绑定数组

在qml中,对于数组,元素绑定只有在整个数组被替换掉时才会生效,添加或删除其中的元素并不会起作用

QmlPropertyBindingExample
1
2
3
4
5
6
7
8
9
10
11
Item{
id:root
property var trackList:[]
function pushTrack(track){
root.trackList.push(track)
}
Text{
id:text
text:root.trackList.length
}
}

在上述代码中,若从外部调用pushTrack函数并不会使text文本发生变化,要使得它生效的方法有两种

1.替换trackList所引用的数组

QmlPropertyBindingExample
1
2
3
4
5
6
7
8
9
10
11
12
13
Item{
id:root
property var trackList:[]
function pushTrack(track){
let temp=root.trackList
temp.push(track)
root.trackList=temp
}
Text{
id:text
text:root.trackList.length
}
}

2.强制释放信号。qml中每当定义一个属性时同时也定义了一个 propertyNameChanged 信号,当属性值改变时,将会自动发射这个信号。

QmlPropertyBindingExample
1
2
3
4
5
6
7
8
9
10
11
12
Item{
id:root
property var trackList:[]
function pushTrack(track){
root.trackList.push(track)
root.trackListChanged()
}
Text{
id:text
text:root.trackList.length
}
}
OLDER >