C++/Qt 信号与槽

一、信号与槽的概念


        信号是在特定情况下被发射的通知;槽是对信号进行响应的函数,槽就是函数,所以也称为槽函数。

        信号与槽关联是用函数QObject::connect()实现的,使用函数connect()的基本格式如下:

QObject::connnect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

        connect()是QObject类的一个基类,而QObject是大部分Qt类的基类,所以在实际调用时,可以忽略前面的限定符部分,所以可以直接写为:

connnect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

        其中sender是发射信号的对象的名称,signal()是信号,信号可以看作是特殊的函数,需要带有括号,有参数时还需要指明各参数类型,receiver是接收信号的对象的名称,slot()是槽函数,需要带有括号,有参数时还需要指明各参数的类型。

        SIGNAL和SLOT是Qt的宏,分别用于指明信号和槽函数,并将它们的参数转换为相应的字符串。

        关于信号与槽的使用,有以下一些规则需要注意:

        (1)一个信号可以连接多个槽函数

                当一个信号与多个槽函数关联时,槽函数按照建立连接时的顺序依次运行;

                当信号与槽函数带有参数时,在函数connect()里要指明各参数的类型,但不用指明参数名称,例如有:

connect(spinNum,SIGNAL(valueChang(int)),this,SIOT(addFun(int)));
connect(spinNum,SIGNAL(valueChang(int)),this,SIOT(updateStatus(int)));

        (2)多个信号可以连接同一个槽函数

                例如有:

connect(ui->redioBlack,SIGNAL(clicked()),this,SIOT(addFun(int)));
connect(ui->redioRed,SIGNAL(clicked()),this,SIOT(addFun(int)));
connect(ui->redioBlue,SIGNAL(clicked()),this,SIOT(addFun(int)));

        (3)一个信号可以连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张鱼小丸子_微辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值