首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否允许使用辅助线程执行QTextBrowser.insertHtml()?

是否允许使用辅助线程执行QTextBrowser.insertHtml()?
EN

Stack Overflow用户
提问于 2016-06-16 12:03:06
回答 1查看 235关注 0票数 3

我生成了一个二级线程来执行一些繁琐的工作,将目标QTextBrowser传递给它,并希望它能够通过insertHtml()将运行时消息输出到QTextBrowser。有时它可以工作,但最终会导致应用程序崩溃。

最初,我使用print(),并将stdout和sderr重定向到QTextBrowser。效果很好。因为我需要丰富的文本功能,所以我放弃了这个方法。

herehere或这里,我注意到这可能是不合法的。

在GUI应用程序中,主线程也称为GUI线程,因为它是唯一允许执行GUI相关操作的线程。 如前所述,每个程序在启动时都有一个线程。这个线程被称为“主线程”(在Qt应用程序中也称为"GUI线程“)。Qt必须在这个线程中运行。所有的小部件和几个相关的类,例如QPixmap,都不能在二级线程中工作

我不太确定。我需要有人来证实这一点。并且可能会提出一种常规的方法来实现它。

EN

回答 1

Stack Overflow用户

发布于 2016-06-16 12:21:19

通常,GUI类(widgets +一些其他类)只应在主线程中使用,正如您在问题中引用的文档中所述。所以,是的,不要在新线程中乱搞QTextBrowser

docs还声明:http://doc.qt.io/qt-5/threads-reentrancy.html

但是您应该注意到,insertHtml是一个插槽。因此,您可以很容易地将一个信号连接到另一个线程中发出的信号(只是不要显式地将其设置为直接连接)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37858645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档