Qt线程问题,在主线程中如何控制子线程的执行?
我现在有一个类(媒体播放类),其中有一个阻塞函数,如果直接在UI主线程中调用会阻塞主线程,所以想开一个线程,将这个类的执行过程都放在这个线程中。
起初UI线程是要调用这个类的一些函数来实现播放的(当然这个类也会提供很多事件和信息。),里面的东西很多,不想动这个类,当放到线程中,我不知道有什么好方法调用这些函数来实现控制。
我的方法是设置10多个标志,当主线程要控制的时候发信号或者调用其中的函数改变这个标志,在QThread的run函数中循环判断这些标志是不是真,然后调用这个类的函数来实现控制,起初这个方式运行的很好,但是当给同事用的时候,他们挨个的调用了这个类的stop,setMediaFile,open。总是导致莫名其妙的问题,请问在Qt中能有什么好方法能对子线程进行控制,或者怎么解决我的方法里的问题?
[最优解释]
http://qt-project.org/wiki/Threads_Events_QObjects_Chinese
这是篇很有用的文章。。。
这个类没有界面且有QObject的话,movetoThread(thread),通过信号槽连接不可以吗?
[其他解释]
嗯,看了这篇文章,在看了看movetoThread函数,的确能够解决我的问题了,谢谢