qt 5信号和槽的新形式,附带lambda表达式在这里的应用(偷懒的神器) qt官方蓝牙的btcha这个demot的个人解读
1 关于信号与槽的一点感想
新技巧QOverload是为了指定使用哪一个函数.此处有一个connect信号和一个connect槽,其中槽没有形参变量
2 可以用函数找到发送信号的是哪个对象
3 退出函数的一种写法
connect(ui->quitButton, &QPushButton::clicked, this, &Chat::accept);
然后主函数中加入这样的话
4 信号槽的连接方式对于信号发送时机的影响的一点心得
5 lambda表达式,可以参考借用 https://www.cnblogs.com/yuankaituo/p/5135750.html
学会后,我发现我很喜欢这个,但是结果就是代码很容易成一坨一坨的,很难看,易读性对于初学者或者想要做联系的人来说,很大挑战.因此建议,简单的一两句话,并且只用一次这种函数,用lambda真的很舒服,对于需要复杂处理逻辑的,我建议还是勤快点,写写函数吧,
此处是一坨坨代码的代表 https://www.cnblogs.com/Oldz/p/13223812.html
我写的比较简洁
6 最后献上我自己对qt官方一个蓝牙通讯demo的解读btchat (有错误的地方还请谅解,毕竟经验好不足)
注意,可运行在安卓和pc两个平台,至少需要两个设备,可以三个设备以上相互互联,形成局域网(前提是都得有蓝牙)
https://files.cnblogs.com/files/RYSBlog/btchat.zip
7 追加,今天还有一个信号和槽的坑,如图,图中最后的还是老式的信号与槽的写法,有个坑就是,信号和槽后要加上(),因为SIGNAL和SLOT中都是字符串,这就意味着如果你不加(),程序也 不会报错,但是运行时就会出异常,这种错误属于运行异常,排查也让人头疼,在学习新模块出现这种错误更加让人头大=_=|
SIGNAL和SLOT这种方式对lambda的支持不是很好.建议用新的信号和槽进行连接