如何快速附加到QTextEdit

时间:2015-11-03 16:18:08

标签: c++ qt

我有一个具有某种日志查看器的应用程序,它需要能够呈现实时插入的格式化日志记录。

我在Qt写这篇文章,到目前为止,我使用QTextEdit来渲染文本,使用一些html标签进行了美化,然后插入了setHtmlinsertHtml

然而问题是,这些功能非常耗费CPU并且可以运行很长时间,因此会挂起整个应用程序。

此处提出了类似的问题:bash - What is the best way to count find-results?

除了声明它真的很慢之外,它没有真正有用的答案,它实际上是一个不同的东西。我不需要加快setHtmlinsertHtml。如果可能的话,我愿意使用完全不同的技术。

Qt中是否有任何可以快速插入文本的机制?或者甚至可能与QTextEdit完全不同的组件?

有没有办法将新行附加到QTextEdit,其中包含非常快的富文本(以任何方式生成)?

我也注意到QTextBrowser但它似乎只是TextEdit的扩展,它可能更快吗?

3 个答案:

答案 0 :(得分:2)

您应该尝试QPlainTextEdit。它使用与QTextEdit相同的技术,但速度要快得多。它针对纯文本处理进行了优化,但是不要让它愚弄你,它仍然对使用HTML进行格式化有一些基本的支持。您可以使用appendHtml()附加HTML格式的文本。

答案 1 :(得分:0)

在我的应用程序中,我还需要显示一个大型日志的任务,大约3500行。日志的某些行应该是彩色的。为此,我使用了HTML格式。 QTextEdit.setHtml有这么多文字,冻结了我的GUI。

我将QTextEdit替换为QListWidget,其中为日志的每一行创建了QListWidgetItem

开始工作得更快,没有带状装饰。

我保存了彩色文字,只需使用QListWidgetItem.setForeground即可。

答案 2 :(得分:0)

[此信息] [1]

[1]:Performantly appending (rich) text to QTextEdit or QTextBrowser in Qt包含此问题的答案。要点:直接添加基础文档,而不是简单地添加HTML代码段。

但是,我建议,如果您的显示内容确实是单行列表,则可以创建QAbstractListModel QAbstractTableModel派生类,并在项目视图中显示它。