Qt:08---信号与槽(connect、disconnect、emit、slots、signals)

Qt有3种方式来实现信号与槽的关系

  • ①使用connect、disconnect来关联/取消信号与槽
  • ②在ui界面手动设置/关联
  • ③使用emit、sender来实现自定义的信号与槽函数的关联

一、connect、disconnect关联

connect()函数

  • 功能:用来将指定的信号与槽函数相关联,当信号发生时,自定执行槽函数
  • connect()有多种参数形式
  • 信号函数:只需要定义,不需要实现,没有实体。槽函数:响应函数,需要实现功能
  • 信号函数与槽函数的参数必须一致(但如果信号函数与槽函数都是系统自带函数,则可以不相同)

形式一:

  • 使用这种形式的connect()函数时:参数1(信号发射者),参数2(信号发射者的信号),参数3(信号接收者),参数4(执行的槽函数)

形式二:

  • 对于具有默认参数的信号与槽,可以使用下面这种函数指针形式进行关联(当lineEdit的文本发生变化时,发生textChanged信号,窗口接收到信号之后,执行widget自定义的on_textChanged槽函数)
  • 注意事项:当信号或槽函数没有重载时,可以省略参数(例如下面)。否则不能省略参数,编译会出错

 

disconnect()函数

  • 功能:当使用connect将一个信号函数与槽函数关联之后,如果想要取消这种关联,就可以使用disconnect函数
  • disconnect函数的参数与connect的参数相同
  • connect()的最后一个参数

二、在ui界面进行信号与槽函数的关联

①设置单个控件的槽函数

  • 如果想要设置单个控件的槽函数,那么可以在ui界面对控件右击,选择一个信号函数,双击之后自动在代码中生成对应的槽函数

  • 点击之后,在代码中自定生成槽函数

②关联2个控件之间的信号与槽函数

  • 在ui界面,按下F4,鼠标左击进行关联,跳出对话框后,选择不同的功能

  • 备注:这种方法的设置,在代码中不会有体现,不建议使用,不便于维护

三、使用emit来实现自定义的信号与槽函数的关联

方法:

  • 在类中自定义信号函数
  • 然后在适合的场所使用connect函数将自定义的信号函数与槽函数相关联
  • 在特定的场景使用emit发射信号,发射信号之后就会执行connect函数关联的槽函数

备注:

  • 信号函数必须是无返回值的函数,可以有参数。只需要定义不需要实现
  • 自定义的槽函数返回值和参数没有限制

演示案例:

  • 自定义信号函数,在类的signals分类下

  • 自定义槽函数,在类的private slots分类下

  • 使用connect将信号与槽函数关联(省略演示)
  • 在特定的场景发射信号,那么就会执行上面的槽函数

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

董哥的黑板报

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

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

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

打赏作者

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

抵扣说明:

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

余额充值