不管哪种参数形式的connect()函数,最后都有一个参数Qt::ConnectionType type,缺省值为Qt::AutoConnection。枚举类型Qt::ConnectionType表示了信号与槽之间的关联方式,有以下几种取值。
(1)Qt::AutoConnection(缺省值):如果信号的接收者与发射者在同一个线程,就使用Qt::DirectConnect方式;否则使用Qt::QueuedConnection方式,在信号发射时自动确定关联方式。
(2)Qt::DirectConnection:信号被发射时槽函数立即执行,槽函数与信号在同一个线程。
(3)Qt::QueuedConnection:在事件循环回到接收者线程后执行槽函数,槽函数与信号在不同的线程。
(4)Qt::BlockingQueuedConnection:与Qt::QueuedConnection相似,只是信号线程会阻塞直到槽函数执行完毕。当信号与槽函数在同一个线程时绝对不能使用这种方式,否则会造成死锁。