news 2026/6/10 17:44:16

【Qt】信号和槽(三) (断开连接和lambda函数)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Qt】信号和槽(三) (断开连接和lambda函数)

信号与槽断开连接

使用disconnect函数,与connect的用法类似。
示例:



按过按钮二后:

实际开发中disconnect的使用较少,大部分情况是把信号和槽连接好后就不再关心。这里用disconnect的场景是主动断开当前信号所连接的槽函数,然后信号再重新连接绑定到另一个槽函数上。
若不断开,则会有两个日志的打印。

lambda表达式定义槽函数

lambda表达式本质是一个匿名函数,主要在回调函数中进行使用。通常是一次性的,也可以用auto识别函数类型,延长生命周期进行调用。
示例:

ambda除了可以按照传值捕获[button],[=]的方式捕获变量,还能按照传引用捕获[&]的方式捕获变量,但Qt中很少用传引用的方式=,因为在Qt中捕获的变量一般是各种控件的指针,指针变量传值或传引用都可以。按引用捕获有致命问题。
按引用捕获的变量,需要关注其生命周期。例如,局部指针变量 button 在构造函数结束时就被销毁,可能被置为 nullptr。若 lambda 按引用捕获了 button,构造函数结束后 button 已为空。此时用户点击按钮触发 lambda,访问空指针会导致程序崩溃。

因此,按引用捕获风险大。按值捕获会拷贝指针指向的堆地址,即使外部指针被置空,lambda 内部的拷贝仍然有效。实际开发中,建议尽量使用值捕获。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 17:41:20

认识自动化测试

在我开展自动化测试之前,其实该项目以前的测试人员也已经写了很多的接口测试用例,但是大多数用例处于“半瘫痪”状态,在CI上无人维护(听说起初是有人维护的,但是后来用例多了,维护的人每次花很长时间去定位…

作者头像 李华
网站建设 2026/6/10 17:38:19

鸿蒙新特性:Menu 下拉菜单深度解析 —— 工具栏与操作面板

引言 在桌面级应用和生产力工具中,下拉菜单是最基础且使用频率最高的交互模式之一。文件菜单、编辑菜单、视图菜单——这些经典的菜单栏设计承载着大量操作入口。HarmonyOS NEXT 的 bindMenu 属性为 ArkUI 组件提供了下拉菜单绑定能力,让开发者能够轻松地…

作者头像 李华
网站建设 2026/6/10 17:38:17

从单机到分布式:用 Go + Eino + DeepSeek V4 构建生产级 Code Review Agent

从单机到分布式:用 Go + Eino + DeepSeek V4 构建生产级 Code Review Agent 不是把大模型接到 GitHub Webhook 上,就叫生产级 Code Review Agent。真正决定系统上限的,是任务编排、规则前置、上下文治理、并发隔离与可观测性。 引言:为什么团队越来越需要“生产级” Code R…

作者头像 李华
网站建设 2026/6/10 17:37:10

Python3 JSON

Python3 JSON 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python3 提供了内置的 json 模块,使得处理 JSON 数据变得非常简单。本文将详细介绍 Python3 中 JSON 的使用方法,包括基本操作、数据序列化…

作者头像 李华
网站建设 2026/6/10 17:33:05

【JVM】垃圾回收GC全套深度详解(大厂高频八股)

大家好,我是程序员二叉。简介 本文一次性讲透对象存活判定、GC Roots、三大GC回收算法、分代回收设计逻辑、对象晋升规则、Minor/Major/Full GC区别、STW、主流垃圾收集器、三色标记法等全套核心考点。欢迎点赞收藏关注。一、如何判断对象是否存活?引用计…

作者头像 李华