专业做室内设计的网站,phpcms学校网站模板,科技医疗网站建设,站酷网如何接单#x1f40c;博主主页#xff1a;#x1f40c;倔强的大蜗牛#x1f40c; #x1f4da;专栏分类#xff1a;QT❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录
一、信号与槽的断开
二、使用Lambda 表达式定义槽函数
1、局部变量引入方式 [ ]
2、函数参数 博主主页倔强的大蜗牛 专栏分类QT❤️感谢大家点赞收藏⭐评论✍️ 目录
一、信号与槽的断开
二、使用Lambda 表达式定义槽函数
1、局部变量引入方式 [ ]
2、函数参数 3、选项Opt
4、Lambda表达式的返回值类型 -
5、Lambda表达式的函数体 { }
6、槽函数使用Lambda表达式来实现
三、信号与槽的优缺点 一、信号与槽的断开 使用disconnect 即可完成断开. disconnect 的用法和 connect 基本一致. 示例 二、使用Lambda 表达式定义槽函数 Qt5 在 Qt4 的基础上提高了信号与槽的灵活性允许使用任意函数作为槽函数。 但如果想方便的编写槽函数比如在编写函数时连函数名都不想定义则可以通过 Lambda表达式 来达到这个目的。 Lambda表达式 是 C11 增加的特性。C11 中的 Lambda表达式 用于定义并创建匿名的函数对 象以简化编程工作。 Lambda表达式 的语法格式如下 [ capture ] ( params ) opt - ret { Function body; } capture捕获列表params参数表opt函数选项ret返回值类型Function body函数体
1、局部变量引入方式 [ ] [ ] : 标识一个 Lambda表达式的开始。不可省略。 符号 说明 [ ] 局部变量捕获列表。Lambda表达式不能访问外部函数体的任何局部变量 [a] 在函数体内部使用值传递的方式访问a变量 [b] 在函数体内部使用引用传递的方式访问b变量 [] 函数外的所有局部变量都通过值传递的方式使用, 函数体内使用的是副本 [] 以引用的方式使用Lambda表达式外部的所有变量 [, foo] foo使用引用方式, 其余是值传递的方式 [, foo] foo使用值传递方式其余引用传递 [this] 在函数内部可以使用类的成员函数和成员变量 和 形式也都会默认引⼊ 说明 由于使用引用方式捕获对象会有局部变量释放了而Lambda函数还没有被调用的情况。如果执行Lambda函数那么引用传递方式捕获进来的局部变量的值不可预知。所以绝大多数场合使用的形式为 [] () { } 早期版本的 Qt若要使用Lambda表达式要在 .pro 文件中添加 CONFIG C11因为 Lambda表达式 是 C11 标准提出的。Qt5 以上的版本无需手动添加在新建项目时会自动添加 示例1Lambda表达式的使用 示例2以 [] 方式传递外部的所有变量在Lambda表达式中都可以使用 示例3以 [a]方式传递在Lambda表达式中只能使用传递进来的 a 2、函数参数 (params) 表示 Lambda函数对象接收的参数类似于函数定义中的小括号表示函数接收的参数类型和个数。参数可以通过按值如(int a,int b)和按引用如(int a,int b)两种方式进行传递。函数参数部分可以省略省略后相当于无参的函数。 3、选项Opt Opt 部分是可选项最常用的是 mutable 声明 这部分可以省略。 Lambda表达式外部的局部变量通过值传递进来时其默认是 const所以不能修改这个局部变量 的拷贝加上mutable 就可以修改。 4、Lambda表达式的返回值类型 - 可以指定 Lambda表达式返回值类型如果不指定返回值类型则编译器会根据代码实现为函数推导一个返回类型如果没有返回值则可忽略此部分。 示例 5、Lambda表达式的函数体 { } Lambda表达式的函数体部分与普通函数体一致。用 { } 标识函数的实现不能省略但函数体可 以为空。 示例 6、槽函数使用Lambda表达式来实现
示例点击按钮关闭窗口 三、信号与槽的优缺点 优点: 松散耦合 信号发送者不需要知道发出的信号被哪个对象的槽函数接收槽函数也不需要知道哪些信号关联了自己Qt的信号槽机制保证了信号与槽函数的调用。支持信号槽机制的类或者父类必须继承于 QObject类。 缺点: 效率较低 与回调函数相比信号和槽稍微慢一些因为它们提供了更⾼的灵活性尽管在实际应用程序中差别不大。通过信号调用的槽函数比直接调用的速度慢约10倍这是定位信号的接收对象所需的开销遍历所有关联编组/解组传递的参数多线程时信号可能需要排队这种调用速度对性能要求不是非常高的场景是可以忽略的是可以满足绝大部分场景。 ❤️结语 本次精彩内容已圆满结束希望各位读者在阅读过程中能够收获满满。在此特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处欢迎在评论区留言蜗牛必定会认真对待并加以改进以便为大家呈现更优质的文章。你们的支持与鼓励将是博主不断前进的最大动力。再次感谢大家的陪伴与支持