Qt显示超大富文本的最佳方式是什么?

Qt's best way to display very large rich text?

本文关键字:最佳 方式 是什么 文本 显示 Qt      更新时间:2023-10-16

我需要显示非常大的日志,这些日志使用HTML标记来标记不同类型的数据。

使用qtexttedit和QTextBrowser确实降低了应用程序的速度,特别是在追加操作时。我真的很想保留QTextEdit的界面和功能。

我看到有人实现了他们自己的textit风格来提高性能,但我不知道是否有人使用"Qt"工具解决了这个问题。我考虑过使用模型/视图框架按需加载数据,但这并不是我想要的。

可能子类化QTextEdit并覆盖它的一些插槽滚动…

如果有人遇到这个问题并解决了它,我将非常感谢一些建议。

谢谢。

对于大型日志文件使用QPlainTextEdit——这就是它的设计目的。您无法获得QTextEdit提供的全部选项,但是您可以设置字体和文本颜色。

由于您的日志在某种程度上可能是表格式的,那么模型/视图框架听起来似乎可以为您工作。也许您可以尝试使用QListViewQGraphicsTextItem:

http://doc.qt.nokia.com/latest/qgraphicstextitem.html

它有设置/获取HTML的方法:

http://doc.qt.nokia.com/latest/qgraphicstextitem.html setHtml

http://doc.qt.nokia.com/latest/qgraphicstextitem.html toHtml

这样写你会得到一些好处和麻烦。但是,您应该能够巧妙地处理插入和追加的速度。

为什么不用QWebKit呢?模块本身相当重,但渲染速度非常好。

由于使用模型/视图架构重新实现QTextEdit的投资回报率很低,我将使用@spraff评论使用分页。

基本上我会限制日志中的行数,因为日志也被转储到文件中,如果用户需要过去或未来的一些东西(通过添加特殊按钮),我将动态地从文件中读取它(轻量级模型/视图....)。