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

是否允许使用辅助线程执行QTextBrowser.insertHtml()?,qt,pyqt,qt4,qt5,Qt,Pyqt,Qt4,Qt5,我生成了一个辅助线程来执行一些繁琐的工作,将目标QTextBrowser传递给它,并希望它能够通过insertHtml()将运行时消息输出到QTextBrowser。有时它可以工作,但最终会使应用程序崩溃 最初,我使用print(),并将stdout和sderr重定向到QTextBrowser。它工作得很好。因为我需要富文本功能,所以我放弃了这个方法 从或在这里,我注意到这可能是不合法的 在GUI应用程序中,主线程也称为GUI线程,因为它是唯一允许执行GUI相关操作的线程 如前所述,每个程序在启

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

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

从或在这里,我注意到这可能是不合法的

在GUI应用程序中,主线程也称为GUI线程,因为它是唯一允许执行GUI相关操作的线程

如前所述,每个程序在启动时都有一个线程。该线程称为“主线程”(在Qt应用程序中也称为“GUI线程”)。Qt GUI必须在此线程中运行。所有小部件和几个相关类,例如QPixmap,都不能在辅助线程中工作

我不确定。我需要有人来证实这一点。一般来说,GUI类(小部件+其他一些)应该只在主线程中使用,正如您在问题中引用的文档中所述。因此,是的,不要在新线程中乱搞
QTextBrowser

这些文件还声明:

但你应该注意这是一个插槽。因此,您可以轻松地将在不同线程中发出的信号连接到它(只是不要显式地将其设置为直接连接)