3
在我的項目中,我需要使用QML列表視圖顯示一些數據的列表。而且,我使用的QT版本是QT 5.0.2。由於在這個版本的Qt中沒有滾動條視圖,所以我設法按照這個example來實現它。QML列表視圖中的大型數據集列表視圖/ C++列表模型
現在,數據源是提供C++ API來請求數據範圍的其他組件。數據集中的元素數量可能非常龐大(數以萬計)。
我按照下面的步驟來實現我的要求:
- 我有一個創建了一個C++類,從QAbstractListModel繼承我已經重寫rowCount時,數據canfetchmore並獲取更多的功能。
- 而在QML中,我已經將實例C++作爲模型。
- 每次調用fetchmore()函數時,我都會使用另一個組件提供的C++ API來請求下一組數據,並將其附加到我的列表模型中。
到目前爲止,它是好的。但我需要一些澄清 -
- 如果我不斷追加數據到我的列表模型,那麼我最終會在列表中存儲數千個元素(我不想這樣做)。我想限制列表中的元素數量並將其用作環形緩衝區。這可能嗎?
- fetchmore中的QModelIndex參數被接收爲無效索引。爲什麼?
- 假設一個案例:在滾動條上提到了字母,當用戶在滾動條上選擇Y時,我應該獲取以Y開頭的元素。在這裏,我可以從外部組件中獲取數據並使用新數據重置列表模型。但是,如果我這樣做,那麼我的列表將以Y元素開始,我將無法向上滾動以獲取以前的元素。 - 有沒有其他辦法可以實現這一目標?
- 另外,如果我詢問大量數據(例如在第3點中提到的情況下),我的其他組件需要相當長的時間 - 有什麼建議可以做出更好的設計來處理這種情況?
- 除了fetchmore(),還有什麼辦法動態更新模型。
我花了很多時間在谷歌上獲得我的問題的答案,我已成功失敗。 :(
任何幫助表示讚賞。在此先感謝。