我的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()));
Run Code Online (Sandbox Code Playgroud)
假设dialog是指向进度对话框的指针.
顺便说一句,你为什么要使用SHFileOperation的,而不是由提供的操作QDir和QFile?
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |