qt - 用于显示大量数据行的Qt小部件

  显示原文与译文双语对照的内容

我正在尝试使用 Qt ( 5.1 ) 在可以滚动视图中显示大量的柱状记录。

我想要浏览的行数可以从 100百万到 1亿,说。

带有自定义模型的QTableWidget工作几百万行,但QTableWidget为每行分配数据,因为你可以为每行分配数据,因为你可以将行的高度设置为 megabytes,甚至可以为 100M 行存储 memory 。

我不需要重大的行功能只是一个多列列表,但QTreeCtrl似乎不适合多行,QList似乎只支持单列。

我应该从QAbstractItemView实现定制小部件?

对于那些熟悉 vmkernel/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)

时间: 作者:

如果是表格数据,我将使用表格。 我将用定制的QAbstractTableModel编写定制的QTableView 。 在QTableView中,你可以控制所有可见项。 我将在QTableView和它之间共享某种检查或者变量以控制应该显示多少数据。 通过重写QAbstractTableModel中的数据方法,你可以指定要显示多少数据。 你也可以用qtableview条的滚动来使事情看起来更好。

如果你不真正关心编辑或者外观,你可以使用设置为只读的简单 qtextedit/QTextBrowser 。

注:带有自定义模型的QTableWidget有些毫无意义。 QTableWidget和QTableView的主要区别在于QTableWidget拥有自己的预制模型。

Qt视图在大数据量方面是缓慢的。 这里不能使用 QTableWidget 或者 QStandardItemModel,因为它们为每个表项目创建了新的对象。 这会带来很大的开销。你应该从实现自己的快速 QAbstractItemModel 子类开始,并在标准的QTableView 中显示它。 有可能,它的工作速度可以接受。 你还可以尝试设置视图的固定行高以加速操作。

如果不能正常工作,你可以尝试实现自己的表视图。 也可以使用图形视图框架在中描述这个答案。

作者:
...