I am trying to display a large amount of columnar records in a scrollable view using Qt (5.1).
The number of rows I would like to be able to browse can vary from 100 million to 1 Billion, say.
The QTableWidget with a custom model works a few million rows, but the QTableWidget allocates data for each row because you can re-size the rows height, and so it must store data for this, which can use megabytes or even gigabytes of memory with 100M rows.
I do not require the re-sizeable rows functionality just a multi-column list would be ideal, but QTreeCtrl doesnt seem to work with many rows, and QList seems to only support single columns.
Should I be implementing a custom widget from QAbstractItemView for this purpose?
For those familiar with wxwidgets/wepython it can be done like this, and works well with billions of rows:
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)