QT---信号与槽机制

信号(signal)

信号是由对象改变状态后发射(emit)出去的事件,例如:一个pushButton(对象),最常见的就是鼠标点击,单击的这个动作就会产生一个clicked()信号,使信号发射出去。
注意:对象只是负责发送信号,但它并不知道由谁来接收这个信号,这样就做到了对象的信息封装。

槽(slot)

槽是用来接收信号的,是一个普通的对象成员函数,当槽与信号关联的时候,信号被发射,关联的槽函数就自动被执行。

槽函数的命名格式

void on_对象名_信号名(参数);

信号与槽的关联

通过Qobject的connect()成员函数来实现。

connect(sender,SIGNAL(signal),resiver,SLOT(slot));
connect(A,B,C,D);
  • sender和resiver是指向该对象的指针,即发送信号对象和接收信号对象

  • SIGNAL()转换信号与SLOT()槽是QT的宏

  • 当对象A发送B信号的时候,就会触发C的槽函数D
    注意:信号与槽都是char*字符串类型,两个类型必须一致

特点:

  1. 一个信号可以连接多个槽,按连接时的顺序执行
  2. 多个信号也可以连接同一个槽
  3. 信号与信号也是可以相连的

注意:
1.信号与槽的参数个数类型必须一致
2.信号与槽函数是没有返回值的
3.当信号关联所有的槽函数执行完毕后固化,才会执行后面的代码
4.必须在类中定义Q_OBJECT
5.槽函数与信号的声明必须放在setupUI之后

实例1–自动关联

这里我们采用的是自动关联信号与槽的方式,也可以进行手动关联信号与槽

我们创建一个带ui界面的项目,用的widget,点击ui界面选择PushButton的控制器,拖拽到ui界面里面
在这里插入图片描述
右键点击转到槽
在这里插入图片描述
这里我们选择第一个信号,然后点击确定,就会自动转到该信号的槽函数
在这里插入图片描述

在这里插入图片描述

在头文件查看,类中定义Q_OBJECT,且有槽函数的声明
在这里插入图片描述

信号与槽的关联
运行效果:
在这里插入图片描述

实例2–手动关联

我们依然使用Push Button来举例子
依然是把控制器件拖拽到ui界面上,然后我们在相应的头文件中,添加自己声明的槽函数
最后也能实现相应的功能。
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/59618cbf21e447d0827eb4fbafcd68a1.png

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最没脑子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值