• 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();

  • 相关阅读:
    微软疑断自由软件开发者“活路”,禁止在微软商店发布商业开源
    Gitlab 数据备份和还原(填坑版)
    最长递增子序列
    Android中的RxJava入门及常用操作符
    贝壳村到全球市场:跨境电商助力农村经济
    javaWeb—JavaScript
    Kotlin中使用ViewBinding绑定控件并添加点击事件
    Solon 1.6.36 发布,更现代感的应用开发框架
    7种典型的钢结构BIM应用
    SLAM视觉里程计的理解
  • 原文地址:https://blog.csdn.net/qq_44667165/article/details/127867209