1. QObject::connect函数
bool connect(const QObject* sender, //发送者 const char* signal, //信号 const QObject* receiver, //接收者 const char* method, //槽函数 Qt::ConnectionType type = Qt::AutoConnection);//连接方式
2. 深入信号与槽的连接方式
(1)Qt::DirectConnection(直接连接,立即调用):直接在发送信号的线程中调用槽函数,等价于槽函数的实时调用!
(2)Qt::QueuedConnection(队列连接,异步调用):信号发送至目标线程的事件队列,由目标线程处理;当前线程继续向下执行!
(3)Qt::BlockingQueuedConnection(阻塞式队列连接,同步调用):信号发送至目标线程的事件队列,由目标线程处理;当前线程等待槽函数返回,之后继续向下执行。(注意:目标线程和当前线程必须不同!)
(4)Qt::AutoConnection(默认连接):这是connect函数第5个参数的默认值,也是工程中最常用的连接方式。
(5)Qt::UniqueConnection(单一连接)
①默认下,可以多次调用connect函数将同一个信号连接到同一个槽函数,多次的连接意味着同一个槽函数会被多次调用。
②而UniqueConnection会使上述的多次连接中只保留一个,即同一个信号与同一个槽函数之间只有一个连接。
③其功能与AutoConnection相同,自动确定连接类型。
【编程实验】信号与槽的连接方式
3. 小结
(1)信号与槽的连接存在多种方式
(2)立即调用方式等价于槽函数的实时调用
(3)默认方式自动确定连接类型
(4)同步方式中的目标线程与当前线程必须不同
(5)单一连接方式确保同一个信号与同一个槽之间只有一个连接。
时间: 2024-10-12 19:08:03