Qt5中 Lambda 表达式的使用

2023-11-13

在Qt中信号的槽函数可以使用Lamba表达式来代替,作为槽函数的替代函数。
Lambda是C++11添加的内容,在Qt5中使用需要在项目文件中添加CONFIG += c++11
Lambda的基本类型为: 【】( ) { }
与普通函数void change() { }相比,只有括号和大括号相同,作用也是相同的,即:括号()用来传递参数,大括号{}内为函数体

方括号【】用来传递局部变量,可在【】内枚举函数体内需要用到的局部变量。使用【=】则外部的所有变量函数体内都可使用。同理【&】用引用的方法也相同,但是如果需要引用的变量是动态的,例如指针,则这种方法可能会引发出错,内存释放不及时,导致其他变量的值出错。【this】这也类似,都能使用函数体外部的变量

括号()用来传递参数,如果对应的信号函数有参数,例如:clicked (bool )信号函数,则可在括号内添加相应类型的参数,方便传参

但是默认在函数体内不允许修改外面的变量的值,如果需要修改,则需要在括号后面添加关键字 mutable 。即:【=】(bool chan)mutable { }

示例代码:

QPushButton *b4 = new QPushButton(this);  //创建新按钮
b4->setText("Lambda表达式");              //修改按钮名字
b4->move(150, 150);                       //按钮位置
int a = 10, b=20;
connect(b4, &QPushButton::released,       //连接函数,使用Lambda函数则不必指定接收对象,只需利用Lambda函数来代替槽函数即可
        [=]() mutable
        {
            b4->setText("change");
            a = 11;
            qDebug()<<a << b;
            qDebug() << "Lambda表达式";  //打印
        }
        );   //括号不要落下
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt5中 Lambda 表达式的使用 的相关文章

随机推荐

  • Java多线程-线程池ThreadPoolExecutor的submit返回值Future

    一般使用线程池执行任务都是调用的execute方法 这个方法定义在Executor接口中 public interface Executor void execute Runnable command 1 2 3 这个方法是没有返回值的 而
  • 微信企业号的基本配置流程(新手,勿喷!)

    一 登录微信公众号 确认登录的公众号为企业认证 二 打开开发里面的基本配置 如图 三 根据你的项目后台微信配置里面需要的数据 来在微信公众号的后台找到 然后 一一对应的写入你的项目后台的微信配置 如图 这是我的项目后台微信配置 四 按照自己
  • 《统计学习方法》学习笔记(一):概论

    统计学习方法三要素 模型 策略和算法 策略是想要最优解 模型给定输入 训练 得到输出 算法处理信息的方法 模型选择 正则化 交叉验证与学习泛化的能力 正则化 防止过拟合 简单来说是限制在规则之内 减小误差的行为 规则化 给需要训练的目标函数
  • Oracle的锁表与解锁

    Oracle的锁表与解锁 SELECT rule s username decode l type TM TABLE LOCK TX ROW LOCK NULL LOCK LEVEL o owner o object name o obje
  • Java学习:使用Freemarker导出简单的Word文档

    一 准备工作 准备想要导出的word文档的模板 准备maven的依赖
  • 实验室服务器conda使用教程

    目录 前言 1 下载conda 2 安装conda 3 检查conda是否安装成功 4 配置conda镜像 5 创建conda环境 6 在环境中安装模型所需的库文件 7 conda的其他用法 8 服务器离线安装python库文件 以torc
  • ubuntu下移植Qt软件

    export PATH home ubuntu yhj plugins PATH export QTDIR home ubuntu yhj plugins export LD LIBRARY PATH QTDIR lib LD LIBRAR
  • Kvrocks 在 RocksDB 上的优化实践

    不久前 Kvrocks 发布 2 0 5 版本 该版本不仅增加了许多新功能 还使用了RocksDB 的新特性大大提升了性能 本文将重点介绍 Kvrocks 是如何使用这些特性来提升磁盘类型 Redis 服务的性能 希望能给大家带来一些参考
  • mock.js文档详解1及下载(数据模板)

    作用 生成随机数据 拦截Ajax请求 mock数据模板的书写规则 属性名 规则 属性值 规则共有七种 1 name min max value 针对value的不同类型会有不同意义 2 name count value 3 name min
  • 手机按键失灵怎么修复_手机触摸屏失灵了怎么办,六种方法自己就能修好它!...

    你是否碰到这种抓狂的时候 手机屏幕总是要按多几下才能反应过来 有时点了好几下也依然没反应 其实 发生这样的触屏失灵的问题 也是有多方面的原因造成 有时是外在的客观原因引起 有时是个人的主观因素导致 如今 我们的手机绝大多数都是电容屏的 而电
  • 2022全国高校计算机能力挑战赛决赛python组编程计挑赛决赛3

    输入格式 一个日期 格式 年 月 日 1 算法中要能够自动对输入的日期进行判断 若年份不是2022年或月份不是1月份至8月份中的某一个月份值 则输出 数据输入错误 2 算法中能够对输入的 日 的数字进行判断 要按照实际情况进行判断 如1 3
  • ChatGLM2-6B! 我跑通啦!本地部署+微调(windows系统)

    ChatGLM2 6B 我跑通啦 windows系统 1 跑通了啥 2 咋跑通的 2 1 ChatGLM2 6B本地部署 2 2 ChatGLM2 6B本地微调 2 3 小结 3 打算做什么 1 跑通了啥 记录一下此时此刻 2023年7月8
  • pythonSDK安装+Visual Studio Code

    安装PythonSDK 点击去下载python的SDK https www python org 去下载 双击 下载好的安装包 等待安装可能会很慢 如何验证是否成功安装了python的SDK Windows电脑 打开 CMD 窗口 如何打开
  • iOS开发之动画篇-基础篇1

    基础篇 一 制作动画的原理 十二个基本的动画原理 网页动画的十二原则 参考全部开源的HTML和CSS代码实现 二 寻找灵感 1 知名设计师共享平台 Dribbble相当于程序员的gitHub 2 pttrns 手机设计较多 三 制作动画的基
  • 2019零基础如何学好Python?学习Python的策略是什么?

    跟几个IT界的大佬提起python 他们说零基础学好python很简单 python进阶需要花费写气力 都说Python简单易学 那么零基础如何学好Python 有哪些必须学的知识 学习的策略技巧有哪些 今天这篇文章将会给你启发 Pytho
  • PHP学习笔记-MVC框架

    MVC学习笔记 1 什么使MVC框架 MVC是一种软件开发框架 MVC将程序分为三个部分 模型层 M 视图层 V 和控制层 C 对不同的层进行分层管理和控制 方便程序的修改和扩展 2 为什么使用MVC框架 在PHP中使用MVC框架 可以实现
  • GM-MCMC高斯混合马尔科夫-蒙特卡洛算法(Matlab实现)

    GM MCMC高斯混合马尔科夫 蒙特卡洛算法 Matlab实现 地震反演是一种重要的地球物理学方法 通过对震源机制 地球物质介质和地下结构等方面的研究 可以揭示地球内部构造和动力学过程 而线性地震反演则是其中比较基础的一种反演方法 它将地下
  • 错误处理-OSError: Failed to open file b‘C:\\Users\\\xe6\x96\x87...\\ AppData\\Local\\Temp\\scipy-xxxxx

    有人说是中文文件路径的问题 我改了 重启了 没用 而且之前一直好好的 安装scipy 1 6 2 然后 from sklearn model selection import train test split 这样导入就好了 莫名奇妙的错误
  • 【无标题】MySQL左连接出现空数据

    今天检查供应商档案错误的时候 遇到一个与左连接右连接相关的问题 已知 用左连接时 放于前面的表 只要其数据符合where及之后的条件 则该数据会全部查出 而放于后面的表如果有符合左连接条件的数据 则显示其数据 如果没有 则对应行显示空 例如
  • Qt5中 Lambda 表达式的使用

    在Qt中信号的槽函数可以使用Lamba表达式来代替 作为槽函数的替代函数 Lambda是C 11添加的内容 在Qt5中使用需要在项目文件中添加CONFIG c 11 Lambda的基本类型为 与普通函数void change 相比 只有括号