Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Qt4/Qt5 QListWidget慢吗?_Performance_Qt - Fatal编程技术网

Performance Qt4/Qt5 QListWidget慢吗?

Performance Qt4/Qt5 QListWidget慢吗?,performance,qt,Performance,Qt,我计划创建一个应用程序,该应用程序需要在QListWidget(或者可能是QListView/QListModel)中接收/显示大量数据(我对其他选择持开放态度)。 QListWidget每秒将接收大量项目(+100)。如果/当使用滚动条时,我需要显示所有这些项目,并且我希望实现一个非迟缓的效果 如果您使用过Procmon(仅限Windows),那么这就是一个很好的例子 我的问题是:Qt能处理这么多数据而不太慢吗?我应该考虑什么样的实现 我建议创建一个小型原型,并尝试一下性能是否适合您。我想说Q

我计划创建一个应用程序,该应用程序需要在QListWidget(或者可能是QListView/QListModel)中接收/显示大量数据(我对其他选择持开放态度)。 QListWidget每秒将接收大量项目(+100)。如果/当使用滚动条时,我需要显示所有这些项目,并且我希望实现一个非迟缓的效果

如果您使用过Procmon(仅限Windows),那么这就是一个很好的例子


我的问题是:Qt能处理这么多数据而不太慢吗?我应该考虑什么样的实现

我建议创建一个小型原型,并尝试一下性能是否适合您。我想说QListView对您来说可能足够快了。实际上,当我使用类似的日志视图时,我发现QTableView比QListView快一点


但您也应该考虑列表视图是否是最好的用户界面。比如说,当列表中有100万项时(一个半小时后),滚动条将毫无用处。除非单击上/下箭头,否则不能再使用它进行细粒度滚动。当你每秒收到200个新项目时,不停地画这些新线不是很有用,用户无论如何都无法阅读它们。

我建议创建一个小原型,并尝试一下性能是否适合你。我想说QListView对您来说可能足够快了。实际上,当我使用类似的日志视图时,我发现QTableView比QListView快一点

但您也应该考虑列表视图是否是最好的用户界面。比如说,当列表中有100万项时(一个半小时后),滚动条将毫无用处。除非单击上/下箭头,否则不能再使用它进行细粒度滚动。当你每秒收到200个新项目时,不断地画这些新线并不是很有用,用户无论如何都无法阅读它们。

备选方案1 要显示日志,还可以使用
QTextDocument
QTextEdit
。实现更直接,开销可能更少

如果您将其与
QSyntaxHighlighter
混合使用,那么您可以拥有一个非常可读且易于使用的日志流

备选案文2 您还可以实现某种类型的数据分页或分组,这样您可以轻松地跳转到最开始或最新的数据

备选案文3 你可以考虑的另一个想法是,大多数人不想同时查看这么多数据。你可以把电话汇总起来,然后把它们汇总起来

例如:

State 1 abcd
State 1 abcd
State 1 abcd
State 1 abcd
State 2 efg
可以表示为

State 1 abcd (x4)
State 2 efg (x1)
备选案文4 或者您可以使用图形化方法。使用类似于
Qwt
QGraphicsView
的方式绘制数据流,这种方式对于正在显示的大量数据是有意义的

备选案文5 最后,另一种可能被证明有用的方法是将其写入硬盘。如果用户想要查看当前日志文件,则可以使用一个按钮

希望有帮助。

备选方案1 要显示日志,还可以使用
QTextDocument
QTextEdit
。实现更直接,开销可能更少

如果您将其与
QSyntaxHighlighter
混合使用,那么您可以拥有一个非常可读且易于使用的日志流

备选案文2 您还可以实现某种类型的数据分页或分组,这样您可以轻松地跳转到最开始或最新的数据

备选案文3 你可以考虑的另一个想法是,大多数人不想同时查看这么多数据。你可以把电话汇总起来,然后把它们汇总起来

例如:

State 1 abcd
State 1 abcd
State 1 abcd
State 1 abcd
State 2 efg
可以表示为

State 1 abcd (x4)
State 2 efg (x1)
备选案文4 或者您可以使用图形化方法。使用类似于
Qwt
QGraphicsView
的方式绘制数据流,这种方式对于正在显示的大量数据是有意义的

备选案文5 最后,另一种可能被证明有用的方法是将其写入硬盘。如果用户想要查看当前日志文件,则可以使用一个按钮


希望能有帮助。

每秒这么多的项目是多少?100? 1000? 10000? 更多?比如说每秒200个项目,每行有几个字段(比如10个),很明显,如果每秒有200个项目,那么这不是一个UI元素,至少在同一时间不可视,那么用户如何与每秒有200个项目的列表交互?坏主意…@ddriver请阅读我在Roku回答中的评论:)好吧,这就是每个简单网站的运作方式。如果得到一百万个结果,它们不会同时显示在单个视图中。您只使用视图显示一部分项目,并让用户能够导航他正在查看的项目的哪一部分。那么,每秒的项目数量有多大?100? 1000? 10000? 更多?比如说每秒200个项目,每行有几个字段(比如10个),很明显,如果每秒有200个项目,那么这不是一个UI元素,至少在同一时间不可视,那么用户如何与每秒有200个项目的列表交互?坏主意…@ddriver请阅读我在Roku回答中的评论:)好吧,这就是每个简单网站的运作方式。如果得到一百万个结果,它们不会同时显示在单个视图中。您仅使用视图显示部分项目,并允许用户浏览他正在查看的项目部分。我不会自动滚动,但如果用户决定滚动,我确实希望所有数据都可用。关于使用其他东西,我考虑过,但我没有找到任何好的替代品。我需要ListView的功能(排序、列),但正如我所说的,我乐于接受各种想法!然后使用th创建一个原型