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

时间: 2024-10-12 19:08:03

第81课 信号与槽的连接方式的相关文章

Qt5 UI信号、槽自动连接的控件重名

Qt5 UI信号.槽自动连接的控件重名 来源 http://blog.csdn.net/goldenhawking/article/details/51865909 对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connection

QT5信号和槽机制(新手日记)

信号和槽是 Qt 编程的一个重要部分. 槽和普通的 c++成员函数很像.它们可以是虚函数(virtual),也可被重载(overload),可 以是公有的(public ),保护的( protective ),也可是私有的( private ),它们可以象任何 c++成员函数一样被调用,可以传递任何类型的参数.不同在于一个槽函数能和一个信号相连接,只 要信号发出了,这个槽函数就会自动被调用. connect 函数语法如下: connect(Obeject1, SIGNAL(signal), Ob

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

PyQt 5信号与槽的几种高级玩法 http://www.broadview.com.cn/article/824 在Qt中,每一个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制.当信号发射时,连接的槽函数将会自动执行.在PyQt 5中信号与槽通过object.signal.connect()方法连接. PyQt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号.信号与槽具有如下特点. 一个信号可以连接多个槽. 一个信号可以

QT 的信号与槽

转载: QT 的信号与槽机制介绍 QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上.QT 支持下列平台:MS/WINDOWS-95.98.NT 和 2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IBM AIX.SGI IRIX:EMBEDDED- 支持 framebuffer

Qt源码分析之信号和槽机制

Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用多了,也复杂多了 MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数开销太大.在Qt中也没有采用C++中的虚函数机制,原因与此相同.其实这里还有更深层次上的原

QT的信号和槽机制简介

信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上.QT支持下列平台:MS/WINDOWS-95.98.NT和2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IB

QT开发(十三)——QT信号与槽机制

QT开发(十三)--QT信号与槽机制 一.QT消息模型 QT封装了具体操作系统的消息机制,遵循经典的GUI消息驱动事件模型. QT定义了与操作系统消息相关的自己的概念,即信号与槽. 信号signal是由操作系统产生的消息. 槽slot是程序中的消息处理函数. connect将系统消息绑定到消息处理函数. 信号到槽的连接必须发生在两个QT对象间. bool QObject::connect ( const QObject * sender, //发生对象 const char * signal,

qt中信号与槽机制

一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信. 信号 当对象改变其状态时,信号就由该对象发射 (emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号.这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用. 槽 用于接收信号,而且槽只是普通的对象成员函数.一个槽并不知

QT的信号与槽机制介绍

信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上.QT支持下列平台:MS/WINDOWS-95.98.NT和2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IB