QTimer使用不当崩溃
一、坑的现象
程序崩溃
二、遇坑的原因
qt中遇到耗时的操作需要等待,通常会使用QEvenloop去等待,并使用定时器设置超时时间,使得界面不会卡住。但使用不当会造成问题,错误写法是:
void xx::waitTime(const int &nTimeout)
{//超时保护QTimer::singleShot(nTimeout, [&event](){m_eventLoop.quit();});m_eventLoop.exec();
}
这种写法有个问题,当xx这个实例类释放的时候,m_eventLoop内存没有了,但是定时器还在计时,超时后会继续调用槽函数,此时就会发生崩溃。有些new出QTimer的操作,要是没有给定时器赋父对象,QTimer实例一样不会停止计时。
修正这个问题的话,有两种做法,一种是eventLoop退出的同时,停止定时器,另一种就是判断eventLoop是否释放。
三、正确写法
void xxxxx::waitTime(const int &nTimeout)
{std::shared_ptr<QEventLoop> loopPtr = std::make_shared<QEventLoop>();QTimer::singleShot(nTimeout, this, [=](){loopPtr->quit();});loopPtr->exec();
}
四、总结
上述只是QTimer使用不当比较常见的一种问题,不管是什么时候QTimer没有正常停止都可能会引起不必要的问题,new QTimer的时候最好给父对象,不然没出崩溃问题,可能也会内存泄漏。
QTimer使用不当崩溃相关推荐
- 【Qt】Qt信号与槽使用不当,使程序崩溃
问题描述 跨线程使用Qt信号和槽,信号发送时间间隔小于槽函数处理时间时,造成程序崩溃. 原因分析 跨线程使用Qt信号和槽时,connect默认是QueuedConnection,队列连接方式. 信号传 ...
- linux 使用jstack_案例解析:线程池使用不当导致的系统崩溃
前几天,发现一台阿里云服务器上的Web服务不可用.远程SSH登录不上,尝试几次登录上去之后,执行命令都显示 -bash: fork: Cannot allocate memory 一看以为是内存泄漏导 ...
- Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)
目录 1.QTimer计时器类 2.QThread多线程类 3.事件处理类 一般情况下,应用程序都是单线程运行的,但是对于GUI程序来说,单线程有时候满足不了需求.例如,如果需要执行一个特别耗时的操作 ...
- 常见Android Native崩溃及错误原因
作者介绍:王竞原,负责网游刀锋铁骑项目,使用C++10年左右,非常喜欢使用C++,特别是C++11.希望能与广大的C++爱好者多交流. 一.什么是Android的C/C++ NativeCrash A ...
- 损害计算机系统,哪些情况下容易导致电脑系统崩溃损坏?
今天我为大家介绍下什么情况可能会导致电脑系统崩溃,哪些不当操作可以致使电脑系统崩溃蓝屏损坏.电脑系统是一台健康电脑的标志,正确使用电脑会给你带来愉快,不正确的使用电脑会给你带来烦恼.我们有的时候也是比 ...
- android按钮点击后闪退_CAD如何恢复自动崩溃、闪退的文件?
在CAD制图时,有时因为操作不当或其它原因面临崩溃.闪退的问题时该怎么补救.下面进行讲解. 01 奔溃.闪退之后,重新打开CAD软件.点击"应用程序"下拉按钮中的"选项& ...
- C++ 常见崩溃问题分析
一.前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来 ...
- 老工程师谈电子物料:别拿一分钱不当回事!
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 一分钱,在现在物价飞涨的年代,早已经退出了货币交流的的历史舞台,成为财务意义上的最小 ...
- jvm 崩溃日志设置_JVM致命错误日志(hs_err_pid.log)分析(转载)
当jvm出现致命错误时,会生成一个错误文件 hs_err_pid.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证系统稳定.当出现cra ...
最新文章
- php字符串比较函数
- 最早做无糖茶的统一茶里王,是怎样错过年轻人的?
- 【Clickhouse】Clckhouse 视图 可以插入 但是查询不到
- Qt Quick实现的疯狂算数游戏
- 搭建WinDbg应用程序调试环境
- 专家,除了呼吁涨价你还会干点什么?
- c语言情话编程,用c语言编写浪漫情话
- 第十一部分 项目采购管理
- 计算机房温湿度,数据中心机房标准的温湿度范围
- MIXLY二次开发(傻瓜版)
- 端午节餐厅公众号推文就用来逗微信编辑器
- MySql常用函数及命令
- 键盘记录器(有发送到指定qq邮箱的功能。附源代码及使用教程,免费下载)
- vscode 取消拉去变基_开发工具之 Git 篇
- 天才富豪鲁宾:长于资产变废为宝
- Python批量修改图片size
- MIT-BIH心律失常数据库详解
- 迎接全电发票的管理方式,iBox电子会计档案管理系统
- MyBatisMySQL
- 深度解析Linux读写锁逻辑
热门文章
- 操作系统-读者写者问题,写者优先,多个读者可以同时读书(C++实现)
- sqllite的基本使用封装
- Pycharm连接sqllite
- 图解Java设计模式-23种设计模式
- 如果互联网公司是一所大学,你Pick哪家?
- 论洗地机蓄电池在洗地机运行中起到的重要作用
- 微信小程序明星开发者博卡君专访
- 老码农公开!我是这样不花钱开CSDN会员的......
- ubuntu 启动时,加载后自动进入emergence mode
- 【VTK】VTK框选表面拾取三角面片——通过观察者命令模式