1、第一个参数:信号的发送者
2、第二个参数:发送的信号
3、第三个参数:信号的接收者
4、第四个参数:处理信号的槽函数
正常来说,用到前面四个参数就可以了,
第五个参数:
如果是多线程,默认使用Qt::QueuedConnection(队列方式)
如果是单线程,默认使用Qt::DirectConnection(直接方式)
5、第五个参数:信号和槽的连接方式(有五种连接方式)
1、Qt::AutoConnection(自动方式)
Qt的默认连接方式,如果信号的发出和接收这个信号的对象同属一个线程,
那么工作方式与直接方式相同;否则工作方式与队列方式相同。
2、Qt::DirectConnection(直接方式)、不能跨线程传递消息
当信号发送后,相应的槽函数将立即被调用。
emit语句后的代码将在所有槽函数执行完毕后被执行。
3、Qt::QueuedConnection(队列方式)
当信号发出后,排队到信号队列中,需等到接收对象所属线程的事件循环取得控制权时才取得该信号,调用相应的槽函数。
emit语句后的代码将在发出信号后立即被执行,无需等待槽函数执行完毕。多线程环境下可使用。
4、Qt::BlockingQueuedConnection(阻塞方式)
信号和槽必须在不同的线程中,否则就产生死锁。
发送信号后发送者所在的线程会处于阻塞状态 ,直到槽函数运行完。多线程同步环境下可使用。
5、Qt::UniqueConnection
与默认工作方式相同,只是不能重复连接相同的信号和槽,因为如果重复连接就会导致一个信号发出,对应槽函数就会执行多次。
这个flag可以通过按位或(|)与以上四个结合在一起使用