• QProgressDialog.close()失败,进度条关闭感觉失败了,无法彻底关闭


            开发环境:我是在deepin(深度)系统下开发的,在我本机上,一点问题也没有,但是我移植到了ubantu的机子上,就偶尔出现出个问题,出现了一个模态框,需要重启软件才能关闭。

            问题描述:在将导出台账成.xlsx文件时,出现了这个问题,那是一头雾水,想了很久,就在今天终于找到问题了。因为导出台账成.xlsx文件时,会调用进度条显示给用户,让用户等待导出完成,如下所示

    可是数据量太小时,进度条一闪而过,基本就是一 progressDialog.show()打开,马上就ProgressDialog.close()调用关闭了,然后就出现了如下的这个模态框,出现模态框也是因为我把进度条的属性设置为模态框属性了,只能放大和缩小,无法移动,只能重启。

     

            解决思路:想了很久,想不出啥思路,直接测试了下代码调用

    1. progressDialog.setLabelText("666666");
    2. progressDialog.show();
    3. progressDialog.close();

    在深度系统下,这种代码,进度条一打开就关闭,肉眼根本无法察觉

    但是在ubantu系统下,这个代码就会出问题,关闭不了,调用close进度条关闭后框框还在,相当于close失败了。咋办,我调试时这个问题又不出现了,在台账导出时,也是偶尔出现,特别是导出的数据量少的情况下。这时候,最终和大佬讨论就想到了可能是系统问题,反应不过来导致的,后面写测试代码,在close前加入了50ms的休眠,没有问题了,正常关闭

    这种问题就比较难搞,但最终和大佬讨论出来了,判断,ubantu系统问题,一开马上关,反应不过来,导致的。

            解决方案:在调用close前加入延时就行了,延时个几十毫秒就ok了

    1. progressDialog.setLabelText("666666");
    2. progressDialog.show();
    3. QThread::msleep(50);
    4. progressDialog.close();

  • 相关阅读:
    视频如何拼接?建议收藏这些方法
    你写过的最蠢的代码是?
    nacos 详细介绍(二)
    【代码精读】中断路由代码导读:当cpu运行在REE(Linux)来了一个Non secure Group1中断
    Linux的rmdir和rm的区别
    使用JsonView在页面展示Json树
    技术分享 | 如何写好测试用例?
    SpringBoot中接口加密解密统一处理!
    CSP 202109-1 数值推导
    【使用 BERT 的问答系统】第 2 章 :用于自然语言处理的神经网络
  • 原文地址:https://blog.csdn.net/qq_44667165/article/details/127867209