如何快速附加到QTextEdit
How to fast append to QTextEdit
我有一个具有某种日志查看器的应用程序,该应用程序需要能够呈现实时插入其中的格式化日志记录。
我正在用Qt写这个,到目前为止,我正在使用QTextEdit
来渲染文本,它使用一些html标签进行了美化,后来插入了setHtml
或insertHtml
。
然而,问题是,这些功能是疯狂的CPU密集型的,并且运行了很长时间,挂起了整个应用程序。
这里提出了一个类似的问题:QTextEdit.insertHtml(( 非常慢
除此之外,它没有真正有用的答案,除了说它真的很慢,它实际上问了不同的事情。我不需要加快setHtml
或insertHtml
.如果可能的话,我愿意使用完全不同的技术。
Qt中是否有任何机制可以真正快速地插入文本?甚至可能与QTextEdit
完全不同的组件?
有没有办法将新行附加到包含富文本(以任何方式生成(的QTextEdit
,而且速度非常快?
我也注意到了QTextBrowser
但它似乎只是文本编辑的扩展,可以更快吗?
你应该试一试QPlainTextEdit
。它使用与QTextEdit
相同的技术,但速度要快得多。它针对纯文本处理进行了优化,但不要让它欺骗您,它仍然对使用 HTML 格式化有一些基本支持。您可以使用 appendHtml()
附加 HTML 格式的文本。
在我的应用程序中,我还需要显示任务的大型日志,大约 3500 行。日志的某些行应着色。为此,我使用了 HTML 格式。 QTextEdit.setHtml
这么多文本,冻结了我的 GUI。
我用 QListWidget
替换了QTextEdit
,其中为日志的每一行创建QListWidgetItem
。
它开始工作得更快,没有楣带。
我保存了彩色文本,只是通过使用QListWidgetItem.setForeground
很简单。
[这篇文章][1]
[1]:在Qt中以高性能方式将(富(文本附加到QTextEdit或QTextBrowser包含此问题的答案。要点:与其简单地附加HTML片段,不如直接操作底层文档。
但是,我建议,如果您的显示确实是单行列表,请创建一个 QAbstractListModel QAbstractTableModel 派生类,并在项目视图中显示它。
- 大量序列中核苷酸类型的快速计数
- 为什么比较运算符如此快速
- 函数何时会在c++中包含stack_Unwind_Resume调用
- OpenCV C++.快速计算混淆矩阵
- 用C++快速读写文件
- Python中的for循环与C++有何不同
- 位阵列上的快速AND运算
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 在TFHE(完全快速同态加密)上执行除法
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 在C++中释放内存期间,迭代器与指针有何不同
- 如何修复我的快速排序实现?
- 在 QTextEdit 中使用指针或在 Qt-Creator 上使用 connect()
- 使用动态实例化的对象填充矢量的快速方法
- 按下特定键时快速按此键.如何防止按下扳机键?(C++)
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在 MIPS 中快速排序
- 从标准::字符串到标准::矢量<bool>的快速转换
- 不正确的比较和交换计数器输出用于快速排序功能
- 如何快速附加到QTextEdit