我想在使用Qt(5.1)的可滾動視圖中顯示大量柱狀記錄。比如說,我希望能夠瀏覽的行數從1億到1億不等。用於顯示大量數據行的Qt小部件
具有自定義模型的QTableWidget可運行幾百萬行,但QTableWidget爲每行分配數據,因爲您可以重新調整行高度,因此它必須存儲此數據,這可以使用兆字節或甚至千兆字節的內存與100M行。
我不需要重新調整大小的行功能只是一個多列列表將是理想的,但QTreeCtrl似乎並不適用於許多行,而QList似乎只支持單列。
我應該爲QAbstractItemView實現一個自定義窗口小部件嗎?
對於那些熟悉的wxWidgets/wepython這是可以做到這樣的,並與數十億行的效果很好:
import wx
class VirtualList(wx.ListCtrl):
def __init__(self, parent, id, pos, size, flags):
wx.ListCtrl.__init__(self, parent, id, pos, size, flags)
def OnGetItemText(self, item, column):
return "Row %d, Column %d" % (item, column)
您不需要一次分配所有1億或10億行,分配100或200,並且當用戶在分配的100或200條記錄的末尾附近滾動時,分配新記錄並釋放那些很遠的記錄來自有效行,現在查看 – Shf
有'QTreeView'可以處理多行顯示,並且比'QTableView'工作更快。它具有'uniformRowHeights'屬性,用於保存樹視圖中的所有項目是否具有相同的高度,從而使視圖能夠進行一些優化。也允許加載數據塊。並非所有數據一次。 –
你可以destribe用戶在哪裏可以查看(真的需要查看)在一次10億行的用戶?你應該考慮數據獲取。因爲你不能在x86平臺上運行你的程序。 –