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

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

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

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

 

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

progressDialog.setLabelText("666666");
progressDialog.show();
progressDialog.close();

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

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

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

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

progressDialog.setLabelText("666666");
progressDialog.show();
QThread::msleep(50);
progressDialog.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值