匿名函数的disconnect方法 QTimer如何disconnect匿名函数
在度娘参阅了各大博客,都没有找的这个问题的解决方案,要么就是解决办法是错误的。最后还是在stackoverflow中找到的。难道就我一个人遇到过这个问题吗。。。
问题描述
国内博客普遍认为,像以下这种信号槽连接,是可以直接调用disconnect()
函数来取消连接的:
QTimer* tm = new QTimer(this);
connect(tm, &QTimer::timeout, this, [=]()
{qDebug()<<"fuck";tm->disconnect();
});
然而,经过测试,这种办法是完全错误的,调用disconnect()
后,触发timeout后还是会输出"fuck",如果多次调用这串代码,会创建更多的连接,而且这些连接是无法被捕获的,类似于申请了一块内存空间,而没有用指针指向它。
经过分析,我认为disconnect()
函数只能销毁代码中定义的命名函数,而对于匿名函数是无能为力的,需要我们自己去解除连接。所以,我们需要注意到connect()
的返回值,利用该返回值来定位对应的连接。
解决办法
QTimer* tm = new QTimer(this);
auto conn = std::make_shared<QMetaObject::Connection>();
*conn = connect(tm, &QTimer::timeout, this, [=]()
{qDebug()<<"fuck";disconnect(*conn);
});
参考:
https://stackoverflow.com/questions/14828678/disconnecting-lambda-functions-in-qt5
匿名函数的disconnect方法 QTimer如何disconnect匿名函数相关推荐
- python字符串函数的find方法_Python string模块 字符串函数方法操作教程
我们在Python编程过程中,经常会处理一些字符串的相关操作,例如:查找.替换.分隔.截取以及英文的大小写转换等,这个时候Python程序员首选的一定是 string模块 . 一.string模块简单 ...
- java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收
1.需求 我的需求是统计域名以及域名出现的次数. 之前使用springboot jpa都是把数据库中的表跟实体类绑定,创建继承JpaRepository的接口.如下: @Repository publ ...
- excel中vlookup函数的使用方法_EXCEL中查找匹配函数VLOOKUP使用技巧
1.VLOOKUP基础用法 VLOOKUP 函数表示: = VLOOKUP (你想要查找的内容,要查找的位置,包含要返回的值的区域中的列号,返回近似或精确匹配-表示为 1/TRUE 或 0/假). 第 ...
- python字符串函数的使用方法_python字符串的操作函数
--------------S.upper() #S中的字母大写 -------------S.lower() #S中的字母小写 S.casefold#S中的字符小写方法(2) S.capitaliz ...
- python中sum函数的使用方法及实例_python求和函数sum()的使用示例
python求和函数sum()的使用示例 发布时间:2020-11-21 11:59:04 来源:亿速云 阅读:59 作者:小新 小编给大家分享一下python求和函数sum()的使用示例,相信大部分 ...
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...
函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留 ...
- 计算机中函数counta表示,excel中counta函数的使用方法
你还在为Excel中counta函数的使用方法而苦恼吗,今天小编教你Excel中counta函数的使用方法,今天,学习啦小编就教大家在counta函数的使用方法. Excel的counta函数的使用方 ...
- matlab round函数怎么用,round函数的使用方法【处理模式】
近日有不少小伙伴咨询这样一个情况,就是在使用时遇到了round函数的使用方法 的问题,round函数的使用方法 虽然不是大问题,但round函数的使用方法 的问题会导致无法正常工作,那该怎么处理呢,下 ...
- input()函数的使用方法
关键词:input()函数 摘要:input()函数的使用方法 目录 一.input()函数输入机制与强制转换 二.input()函数的提示项 三.一次性输入多个变量值 一.input()函数输入机制 ...
最新文章
- Spring知识点提炼
- luoguP1354房间最短路问题
- 十大滤波算法程序大全
- c#实现Socket网络编程
- 计算机专业比重点线高40多分,这3所211大学,超过一本线40分就可报考,性价比高,值得报考...
- 北方网-ios预科班
- c++用什么软件编程_学习编程用什么做笔记比较好?
- 不想打造物联网的制造型企业不是一家合格的百年老店
- kotlin学习笔记-异常好玩的list集合总结
- Linux平台驱动分析
- zk不同页面之间的即时刷新
- oracle 快速入门之第一章 数据库基础
- 人民币兑换、换硬币 C语言
- 情商高手比智商高手要可怕多了
- 学计算机的怎样分析TCGA数据库,开启数据挖掘之门:TCGA数据库入门必看!
- 缓和曲线与原曲线任意点坐标计算程序
- 国科大学习资料--最优化计算方法(王晓)--期末考试试卷2
- 【编程】工具 - Compuware 全套产品的许可文件(License.xml)
- SSM毕设项目学生社团管理系统pyl5z(java+VUE+Mybatis+Maven+Mysql)
- Spark-MLlib 学习入门到掌握-DecisionTreeClassifier决策树分类器[19]
热门文章
- 前端 google maps 地理编码(geocode),模糊搜索(search)
- XSS Challenges/刷题/Stage #3
- 伦敦大学计算机图形学博士,GAMES Webinar 2018 -73期(Siggraph Asia 2018论文报告)| 王杨抟风(伦敦大学学院),李昌健(香港大学)...
- JAVA——取输入范围在1-999内数字最大值,可自动排除无关项
- 重庆自考2022报名注意事项
- SeaJS之use函数
- mysql unique index 允许为null
- 301 Moved Permanently问题排查与解决
- winhex 更改图片的宽和高
- 杭州c语言开发招聘,杭州招银网络科技