详解Qt中connect()函数

一、基本概念

        要想了解connect() 函数,要先知道在Qt中什么是什么是信号(SIGNAL)和槽(SLOT)。

        信号(SIGNAL):指在特定情况下发射的通知。比如当我们点击了用户界面的一个按钮之后就发射了一个信号。

        槽(SLOT):是指对信号进行响应的函数。也就是我们点击了一个按钮后我们要实现的功能。

        那么connect() 函数就是Qt 框架中用于将信号(SIGNAL)和槽(SLOT)关联起来的核心函数。

二、用法

1.旧版用法(Qt4和早期Qt5)

connect(sender, SIGNAL(signalName()), receiver, SLOT(slotName()));
  • sender:发射信号的对象名称
  • signalName():信号名称
  • receiver:接收信号的对象名称,一般情况下为槽函数所属对象,写this即可
  • slotName():槽函数名称

示例: 

connect(button, SIGNAL(clicked()), this, SLOT(handleButtonClicked()));

注意: 如果信号与槽函数带参数还需要在函数括号内标出。

2.新版用法(推荐)

connect(sender, &SenderClass::signalName, receiver, &ReceiverClass::slotName);

         这里引入了基于函数指针的语法,使得编译器可以进行更好的类型检查。但是这里有一个问题:与旧版的写法不同的是,信号与槽函数的参数怎么办?

        首先我们知道,在 Qt 的信号与槽机制中,槽函数的参数不能多于信号的参数。也就是说,信号的参数可以多于槽的参数,且槽函数的参数必须是信号参数的一个子集。那么就可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值