作用:
解决槽函数响应过程中遇到的阻塞问题
使用方式:
- 子类化QThread
- 子类化QObject
要点:
1、槽函数相应之前,一定要对操作的对象进行判断,如果启动线程需要判断线程是否在运行(Running),启动定时器就要判断定时器是否工作(Active)。
2、两种方式在开启线程的时候有所不同,第一种由于重写Run函数,因此直接Start即可;第二种直接Start后,需要发送信号来调用线程中的槽函数,同样,线程可以发送信号来通知外部槽函数做出响应。
3、两种方式在遇到while时,使用Quit函数都会造成阻塞,使用Terminate又不安全,只能用标志位的方式使while退出再Quit。
4、操作标志位时建立一个函数,当其它类调用时,直接调用函数即可,这种函数化的思想方便代码阅读及维护。
5、Connect的第5个参数,此参数在单线程中默认为直接方式,多线程中变为队列方式。
队列方式:接收的槽函数在哪个线程里面就用哪个线程处理。
直接方式:表示信号发送的线程直接去处理其它线程的槽函数。