QT的函数重载和Lambda表达式

一、当自定义信号和槽出现重载

1.如果函数中已经有了无参函数,再加有参函数时,需要重载,可以进行下面的定义:

void (Teacher **:: ***signal) (QString) = **&Teacher:😗*hungry
下面带参数的hungry函数直接用signal代替即可。

2.在有参函数调用时会发现 QString会被引号引起来,如果想消去引号可以采取下列措施:
先在QString后面加 .ToUtf8() 再加 .Data 变成**char ***

3.槽函数和信号类型要匹配,另外参数的个数可以不同,信号的个数可以多与槽函数的个数,但是槽函数的个数不可以比信号的个数多。

二、Lambda表达式

Lambda表达式用于定义并创建匿名的函数对象
形式: { }
中括号里放的符号不同传递的意义不同
"="进行的值传递 ={ }
“&”进行的引用传递 &{ }
中括号里还可以填this、a、&a等,最常用的还是填**=,进行值传递。
{ }里面存的是实现体,即函数体。
进行值传递时,mutable可以修饰值传递变量,可以修改拷贝出的数据,但是改变不了本体。
如果需要把值进行返回,形式为
->int{ }**

三、Q4版本中对于槽函数的写法

Q4版本中对于槽函数的写法,尤其是面对函数重载时,当有参数时:
connect(信号的发送者,发送的信号SIGNAL(信号),信号接收者,槽函数SLOT(槽函数) )
优点:参数直观
缺点:编译器不会检测参数的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值