信号和槽机制~Lambda表达式

本文详细介绍了Qt框架中的信号与槽机制,包括系统自带的信号和槽、自定义信号槽的创建及使用,以及信号槽的连接、断开、重载等操作。通过实例展示了如何在代码中实现信号与槽的交互,强调了信号和槽的一致性要求,同时提到了Lambda表达式在Qt5中连接信号槽的应用。此外,还对比了Qt4和Qt5中信号槽的不同写法。
摘要由CSDN通过智能技术生成

         所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接函数(connect)。即,将想要处理的信号和自己的一个函数(称为槽slot)绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。

系统自带的信号和槽 

         按钮的一个功能就是点击后触发一些事情。例如,点击按钮——>关闭当前的窗口。这样的功能在Qt中这样实现:

//创建一个按钮对象,并设置父级和按钮文本
QPushButton * Btn = new QPushButton("关闭窗口",this);
//连接信号和槽
connect(Btn,&QPushButton::clicked,this,&MyWidget::close);

connect()函数

         connect()函数最常用的一般形式:

connect(sender, signal, receiver, slot);

         参数解释:

  • sender:发出信号的对象
  • signal:发送对象发出的信号
  • receiver:接收信号的对象
  • slot:接收对象在接收到信号之后所需要调用的函数(槽函数)

查找系统自带的信号和槽

         需要利用帮助文档。比如,按钮的点击信号。在帮助文档中输入QPushButton,首先可以在Contents中寻找信号的关键字 signals,若并没有找到,则这个信号可能是被父类继承下来的,因此可以去它的父类QAbstractButton中查找,点击signals索引到系统自带的信号有如下几个:

          槽函数的寻找方式和信号一样,只不过它的关键字是slot。

自定义信号和槽

          Qt 的信号槽机制不仅可以使用connect()可以连接系统提供的信号和槽,还允许自定义信号和槽。

          看一个案例:首先定义一个学生类和老师类。其中&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值