gpt4 book ai didi

c++ - Qt问题: No QProgressBar animation with minimum and maximum steps set to 0

转载 作者:太空狗 更新时间:2023-10-29 20:18:28 24 4
gpt4 key购买 nike

我的 QProgressBar 有问题,我希望有人能给我个主意...

我自己创建了一个带有 QProgressBar 的进度对话框。我将最小和最大步数设置为 0,以便进度指示我的程序很忙(动画的东西......)。

我 show() 这个进度对话框并激活了这个对话框的 Qt::WindowModal。

问题:我在复制文件时使用此对话框,但进度条停止并且不再有动画表明我的程序仍在忙。我使用 Windows 函数“SHFileOperation”将一个包含大量文件的目录复制到目标位置。这当然会在系统上产生大量负载,但至少应该继续前进。

感谢任何帮助!

提前致谢,熊头

最佳答案

问题是 SHFileOperation 调用会阻塞主事件循环。因此,不会处理阻止 QProgressBar 更新的事件。

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

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

假设 dialog 是指向您的进度对话框的指针。

顺便说一句,为什么要使用 SHFileOperation 而不是 QDirQFile 提供的操作?

关于c++ - Qt问题: No QProgressBar animation with minimum and maximum steps set to 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com