2

我正计划创建一个需要在 QListWidget(或者可能是 QListView/QListModel)中接收/显示大量数据的应用程序(我对替代方案持开放态度)。QListWidget 每秒将接收大量项目(+100)。如果/当使用滚动条时,我将需要显示所有这些项目,并且我想达到不迟钝的效果。

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

我的问题是:Qt 可以处理这么多数据而不会很慢吗?我应该考虑什么实施?

4

2 回答 2

2

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

但是您还应该考虑列表视图是否是最好的用户界面。当您在列表中有 100 万个项目时(一个半小时后),滚动条将毫无用处。除了单击向上/向下箭头之外,您不能再将其用于细粒度滚动。而当你每秒获得 200 个新项目时,不断绘制这些新线并不是很有用,用户无论如何也无法阅读它们。

于 2013-03-27T15:41:53.737 回答
2

备选方案 1

要显示日志,您还可以使用QTextDocumentQTextEdit。实现更直接,而且开销可能更少。

如果您将它与 混合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

或者您可以使用图形方法。使用类似的东西QwtQGraphicsView以对您正在显示的大量数据有意义的方式绘制数据流。

备选方案 5

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

希望有帮助。

于 2013-03-27T17:11:47.257 回答