小编Sid*_*tha的帖子

如何避免Qt app.exec()阻塞主线程

我是Qt的新手,但需要解决一个棘手的问题.

我创建了一个非常简单的GUI,我需要将其添加到现有的C++应用程序中.问题是,我只写了一个插入更大架构的模块,这限制了我对主线程的访问.

我的代码必须驻留在以下四个函数中:一个Init()函数,它在主线程中运行.和在工作线程中运行的WorkerStart(),WorkerStep()和WorkerStop()函数.

我在Init()函数中编写了我的QApplication和GUI对象.但是,当然,在该函数末尾调用app.exec()会阻止整个代码.不可行.

我正在阅读的所有东西都说Qt gui对象只能在主线程中运行.

所以我的问题是,如何在init()函数(主线程)中设置我的gui并允许它从那时起仅使用工作线程运行?

我发现了这个:非主线程中的QApplication

那些解决方案给了我一些不同的行为.在正确的方向,但不稳定或完全功能.但我不明白为什么这些解决方案根本不存在qt gui只能在主线程中运行,而这些解决方案将它们放在其他线程中.因此,在其他线程中发送可以和不可以运行的内容的混合消息,这变得非常混乱.

似乎在现有的C++程序中添加gui而不将其锁定在exec()函数中应该是一个相当常见的情况,所以我觉得我错过了一些明显的东西.有人可以帮我解决这个问题吗?

非常感谢提前.菲尔

c++ qt multithreading

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

multithreading ×1

qt ×1