主 GUI 线程在等待 QFuture 时更新 QProgressDialog 的正确方法是什么。具体来说,这个循环中发生了什么:
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
现在我在那里有一个类似 sleep() 的调用,但这不是最佳的(当然会引入一些 GUI 延迟)。
如果我什么都不放,主线程将循环极点 pd.setValue(),浪费 CPU 周期。
我希望放置类似 QCoreApplication::processEvents(flags,maxtime) 的东西,但如果事件队列为空,它会立即返回。我想要一个等到 maxtime 或者即使队列为空的版本。这样,我得到了延迟,并且主线程始终准备好响应 GUI 事件。