第81课 信号与槽的连接方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第81课 信号与槽的连接方式相关的知识,希望对你有一定的参考价值。

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)单一连接方式确保同一个信号与同一个槽之间只有一个连接。

以上是关于第81课 信号与槽的连接方式的主要内容,如果未能解决你的问题,请参考以下文章

Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

Python 小白从零开始 PyQt5 项目实战信号与槽的连接

Qt信号和槽的问题

PyQt 5信号与槽的几种高级玩法

Python学习笔记(24)-Python框架24-PyQt框架使用(信号与槽的关联及资源文件的使用)

qt多线程信号槽传输方式