加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Qt问题:没有将最小和最大步长设置为0的QProgressBar动画

发布时间:2020-12-16 09:30:18 所属栏目:百科 来源:网络整理
导读:我的QProgressBar有问题,我希望有人有个主意…… 我自己创建了一个带有QProgressBar的进度对话框.我将最小和最大步数设置为0,以便进度表明我的程序正忙(动画事物……). 我显示()此进度对话框并激活此对话框的Qt :: WindowModal. 问题:我在复制文件时使用此
我的QProgressBar有问题,我希望有人有个主意……

我自己创建了一个带有QProgressBar的进度对话框.我将最小和最大步数设置为0,以便进度表明我的程序正忙(动画事物……).

我显示()此进度对话框并激活此对话框的Qt :: WindowModal.

问题:我在复制文件时使用此对话框,但进度条停止,没有动画表示我的程序仍然处于忙碌状态.我使用windows函数’SHFileOperation’将一个包含大量文件的目录复制到目标.当然,这会给系统带来很大的负担,但至少应该继续前进.

任何帮助表示赞赏!

提前致谢,
BearHead

解决方法

问题是SHFileOperation调用将阻止主事件循环.因此,不会处理任何事件,从而无法更新QProgressBar.

要解决此问题,您可以在单独的线程中执行复制操作.最简单的方法是使用Qt Concurrent,例如如下:

QFuture<void> future = QtConcurrent::run(SHFileOperation,...);
QFutureWatcher<void> watcher;
connect(&watcher,SIGNAL(finished()),dialog,SLOT(close()));

假设对话框是指向进度对话框的指针.

顺便说一下,为什么使用SHFileOperation而不是QDir和QFile提供的操作?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读