本文主要是介绍学习QT线程时所遇到的问题。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、线程run函数内如果使用了while(1)循环的话,其线程内部的connect()函数无法生效,即信号来了,槽函数也不会得到调用。
原因:while(1)后,无法exec()函数,导致connect()函数没有生效。
解决方法1:可以在while(1)函数最后调用 qApp->processEvents();
解决方法2:不使用while(1)函数来循环,而是通过信号与槽来进行,即通过判断某条件是否成立,如果成立,就发送信号,再调用槽函数,从而达到循环的效果。
二、使用之前老方法,通过继承QThread类来创建线程,导致新建类中的函数并没有在该线程中执行,而是在主gui线程中执行。
原因:
因为在创建新类的时候,其是在主线中创建的,此时并没有运行run()函数,所以其后面运行的函数都是在主线程中运行的。
解决办法1:
后来通过在connect()函数的最后增加了
这篇关于学习QT线程时所遇到的问题。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!