1. 程式人生 > >Qt qml中使用listView載入元件問題

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完成,只需保證介面和後臺相同的操作,這樣就不需要重新載入資料,問題就迎刃而解。

  可能還有更好的方法,這只是我自己的拙見,望指教。