qtextedit 设置html,QTextEdit.insertHtml() is very slow

问题

I've given up on actually trying to make it go faster.

My biggest problem is that when I'm inserting the html, the application slows down to a crawl.

I have a progressbar, and I'm calling

QCoreApplication.processEvents()

(I'm using pyqt, by the way)

Can I put insertHtml() into a different thread, so I don't have an unresponsive interface?

How would I go about that? I've looked into QThread and QThreadPool, and I'm not quite sure where to begin.

回答1:

In GUI applications, the main thread

is also called the GUI thread because

it's the only thread that is allowed

to perform GUI-related operations.

-- from the Qt Docs

So, no. Unfortunately you cannot perform that operation in a thread.

Edit: Technically, it is possible. I just wrote a short snippet that did so, however using Qt GUI objects in that way is highly unsafe.

回答2:

I had this problem as well, here are a few things I did to make it faster:

TxtBrows->setAcceptRichText(false);

TxtBrows->setContextMenuPolicy(Qt::NoContextMenu);

TxtBrows->setOpenLinks(false);

TxtBrows->setReadOnly(true);

TxtBrows->setUndoRedoEnabled(false);

This should get rid of unneeded overhead.

Also when inserting large amounts of text its good to turn off screen updates:

setUpdatesEnabled(false);

TxtBrows->append(SomeBigHTMLString);

setUpdatesEnabled(true);

This was recommended somewhere in the Qt documentation but I can't find the spot just now.

[Edit]

I stumbled across the spot in the Docs (just in time for them to be outdated by QT5 grinn) http://qt-project.org/doc/qt-4.8/qwidget.html#updatesEnabled-prop

来源:https://stackoverflow.com/questions/3120258/qtextedit-inserthtml-is-very-slow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值