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

2019-06-17 05:51发布

I need to display very large logs that uses HTML tags for marking different types of data.

Using QTextEdit and QTextBrowser really slows the application, especially on append operations. I would really like to keep the QTextEdit interface and abilities.

I've seen people that implemented their own flavor of TextEdit to improve performance, but I wandered if anyone solved this issue using "Qt" tools. I thought about using the Model/View framework to load data on demand but it is not quite what it was intended for I think.

Maybe subclassing QTextEdit and override some of its slots for scrolling...

If anyone encountered this issue and solved it, I would appreciate some tips.

Thanks.

标签: c++ linux qt qt4
4条回答
女痞
2楼-- · 2019-06-17 06:04

Use QPlainTextEdit for large log files -- that's what it was designed for. You don't get the full range of options that QTextEdit provides, but you can set the font and the text colour.

查看更多
Deceive 欺骗
3楼-- · 2019-06-17 06:13

why not using QWebKit? Module itself is rather heavy, but rendering speed is very good.

查看更多
淡お忘
4楼-- · 2019-06-17 06:16

Since the ROI on re-implementing QTextEdit with the Model/View architecture is low, I will go with @spraff comment on using paging.

Basically I will limit the number of lines I keep in my log, since the log is also dumped into a file, if the user will require something from the past or future (by adding special buttons), I will read it from the file dynamically (lightweight model/view....).

查看更多
不美不萌又怎样
5楼-- · 2019-06-17 06:17

Since your log is presumably tabular at some level, then the Model/View framework sounds like it could work for you. Perhaps you could try using a QListView with QGraphicsTextItem:

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

It has methods for setting/getting the HTML:

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

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

You'll get some benefits and hassles from writing it that way. But you should certainly be able to finesse the insertions and append speed.

查看更多
登录 后发表回答