QT---信号与槽(3)

目录

一、打印输出文本的编辑

二、补充QT4信号与槽函数的写法

三、信号与槽的总结


一、打印输出文本的编辑

PS更正:去掉打印输出中的空格:space更正为nospace

void Student::treat(QString food){
   // QString---->QByteArray---->char *

    qDebug().nospace()<<"请老师吃饭!"<<food.toUtf8().data();

二、补充QT4信号与槽函数的写法

 PS:1、高版本可以兼容低版本,但低版本不可兼容高版本。

          2、QT4版本中的信号和槽的函数名切勿写错,如果错误并不会编译报错。

  
  //公式:connect(sender,signal,receiver,slot);

  connect(tea,Teachersignal,stu,studentslot);//QT5版本及其以上


  //公式:connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
  connect(tea,SIGNAL(hungury(QString)),stu,SLOT(treat(QString)));//QT4版本

三、信号与槽的总结

  1. 发送者与接受者需要是QObject的子类(槽函数全局,lambda除外)
  2. 信号和槽函数返回值都是void
  3. 信号需要声明不需要定义实现,槽函数需要声明也需要定义实现
  4. 槽函数是普通的成员函数,作为成员函数,会受到public、private、protected 的影响;
  5. 使用emit在恰当的位置发送信号;
  6. 使用connect()函数连接信号和槽。
  7. 任何成员函数、static函数、全局函数和Lambda表达式都可以作为槽函数。
  8. 信号槽要求信号和槽的参数一致,所谓一致,是参数类型一致。
  9. 如果信号和槽的参数不一致,允许的情况是,槽函数的参数可以比信号的少,即便如此,槽函数存在的那些参数的顺序也必须和信号的前面几个一致起来。这是因为,你可以在槽函数中选择忽略信号传来的数据(也就是槽函数的参数比信号的少)。

拓展:

  1. 信号与槽对应可以一对一,一对多(发出信号,槽函数一个一个执行,顺序不确定),多对一(任意信号发出,槽函数都会执行)。
  2. 信号可以连接信号。
  3. 槽可以被断开链接(disconnect),槽也可以被取消链接(当一个对象被delete,取消这个对象上的槽)。
  4. 使用c++11中的lambda表达式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值