Qt qml中使用listView載入元件問題
最近遇到了一個關於ListView的問題,ListView的每個列表上幾個比較簡單的控制元件,剛開始由於資料是實時更新的所以當資料較多時在對ListView進行新增行或者刪除行操作後需要重新載入資料,當操作過於頻繁時就會出現“假宕機”。
於是我使用了
ListView.onAdd: SequentialAnimation {
PropertyAction { target: listItem; property: "height"; value: 0 }
NumberAnimation { target: listItem; property: "height"; to: listItem.height; duration: 250; easing.type: Easing.InOutQuad }
}
ListView.onRemove: SequentialAnimation {
PropertyAction { target: listItem; property: "ListView.delayRemove"; value: true }
NumberAnimation { target: listItem; property: "height"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
// Make sure delayRemove is set back to false so that the item can be destroyed
PropertyAction { target: listItem; property: "ListView.delayRemove"; value: false }
}
實現原理:使用ListView.onAdd、ListView.onRemove操作介面的增刪,實際資料的增刪由cpp完成,只需保證介面和後臺相同的操作,這樣就不需要重新載入資料,問題就迎刃而解。
可能還有更好的方法,這只是我自己的拙見,望指教。