比QListWidget更好的选择是在GUI中显示来自后端的大量日志行,平均速度为每秒40行?
当很多字符串已放入ListWidget时,QListWidget会长时间提供一个闪烁的白色框而不是小部件。
有没有更好的解决方案来动态显示用户的日志行?
更新
改变了架构。将新QStrings 添加到std :: deque< QString *>。使用QTimer我将每1/10秒的字符串添加到QPlainTextEdit,从deque中删除。 boost :: mutex用于保护std :: deque(日志行来自不同的线程)。
很高兴有时间实现我自己的QListView并将字符串保存在大块的预分配内存中。
答案 0 :(得分:2)
您确定需要QListWidget
的功能吗?如果您只想显示日志行,我认为简单的只读QPlainTextEdit
会更合适。
答案 1 :(得分:1)
您可以尝试使用QListView
并拥有QAbstractItemModel
的实施。然后你可以根据需要存储你的行,并在大组中添加新行(大约每一秒都应该没问题)。然后在添加每一行时不会刷新视图,只能在组中进行刷新,这样可以大大提高性能。
答案 2 :(得分:0)
我建议设置刷新率并立即附加所有收集的项目。您将避免在每个追加的行中重新绘制小部件。
长话短说: 具有刷新率的QTimer(~1-3秒就足够了),QListWidget :: addItems而不是QListWidget :: addItem