自动连接(AutoConnection),默认的连接方式。:如果信号与槽,也就是发送者与接受者在同一线程,等同于直接连接,如果发送者与接受者处在不同线程,等同于队列连
直接连接(DirectConnection):当信号发射时,槽函数立即直接调用。无论槽函数所属对象在哪个线程,槽函数总在发送者所在线程执行。
队列连接(QueuedConnection):当控制权回到接受者所在线程的事件循环时,槽函数被调用。槽函数在接受者所在线程执行。
Qt::BlockingQueuedConnection:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。
Qt::UniqueConnection:这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是避免了重复连接。
参考
QT 信号与槽: 连接类型
最新推荐文章于 2024-02-28 15:47:14 发布