从子线程提供Qt GUI的更新

时间:2014-04-15 14:24:35

标签: multithreading qt qt-signals

我知道之前曾提出过非常类似的问题,但我无法找到解决我具体问题的答案。我有一个主(GUI)线程,按下按钮初始化工作线程以执行一些分析。我正在使用信号和插槽在我的工作线程和我的GUI线程之间进行通信(即线程启动时和完成时),但我需要更深入。我的工作线程实际上在一个单独的实现文件中调用另一个类,然后迭代一系列计算,每次迭代都会发送到std :: cout(因为代码曾经是我正在编写GUI的控制台应用程序) 。我试图将每次迭代的输出反馈回我的GUI线程,以便我的文本浏览器在我的代码迭代时实时更新。问题是,当我从我的工作线程调用的类发出信号时,GUI线程不会拾取它。我没有得到任何错误。有没有人对如何从我的工作线程正在调用的类向GUI传输信号有任何建议?我可以根据需要发布代码,但我不确定哪些内容最有用,而且我的代码非常广泛(这是一个飞机性能应用程序)。任何帮助将不胜感激。谢谢你!

1 个答案:

答案 0 :(得分:0)

1)确保连接信号的connect()调用返回true。如果没有,qdebug输出通常会告诉你出错了什么

2)你应该使用QueuedConnection类型(默认(自动)也应该工作)