Я пытаюсь отобразить большое количество столбцовых записей в прокручиваемом представлении, используя Qt (5.1).
Количество строк, которые я хотел бы просматривать, может варьироваться, скажем, от 100 миллионов до 1 миллиарда.
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)
QTreeView
, который может обрабатывать многострочное отображение и работать быстрее, чемQTableView
. У него есть свойствоuniformRowHeights
, которое определяет, имеют ли все элементы в древовидном представлении одинаковую высоту, что позволяет выполнять некоторую оптимизацию представления. Также разрешено загружать фрагменты данных. Не все данные сразу. - person Pie_Jesu   schedule 16.01.2014