信号与槽的connect连接函数

本文详细介绍了Qt中信号与槽的概念,强调了connect函数在两者连接中的重要作用。通过示例展示了如何使用connect函数建立信号与槽的联系,并探讨了连接的安全性和注意事项,包括信号与槽函数签名的匹配、槽函数的类型以及Q_OBJECT宏的必要性。此外,还提供了一个实际例子,展示了一个信号如何触发另一个对象的槽函数,以及如何避免信号的无限循环问题。
摘要由CSDN通过智能技术生成

1 先理解一下信号与槽

我们通常会在改变一个组件的同时,通知另一个组件做出响应。改变一个组件的时候,就会发送一个信号,写好的槽会对这个信号进行匹配,做出相应的相应。

槽和信号都是函数,具有类成员函数相同的属性。唯一不同的就是槽可以与信号进行连接。这种通信方式是安全的,因为信号的函数签名必须与信号的函数签名匹配上。实际中,信号函数的参数可以比槽的参数多,因为槽可以自动忽略无用的参数。

2 connect 函数就是用来将信号与槽之间的联系建立起来的

2.1 格式:

QObject::connect(  发送方, signal(..), 接收方, slot(...))

源码出connect函数是这样定义的connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));  

SIGNAL,SLOT宏的作用是将信号和槽函数转化为字符串并添加标识符。

2.2 在使用connect函数需要注意到的问题

(1) 信号的发送者必须是QObject的派生对象。

(2) 槽函数所在类的定义中必须添加宏Q_OBJECT

(3) 如果槽函数是on_控件命_信号名,那么不需要主动调用connect进行连接

2.3 关于connect函数的实现

代码与注释如下

bool QObject::connect(const QObject *sender, const char *signal,  
                      const QObject *receiver, const char *method,  
                      Qt::ConnectionTy

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值