Ale*_*x77 7 c++ qt qt4 qtconcurrent
主GUI线程在等待QFuture时更新QProgressDialog的正确方法是什么.具体来说,这个循环中的内容:
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个sleep()就像在那里调用,但这不是最佳的(并且当然会引入一些GUI延迟).
如果我什么也没放,主线程将循环极点pd.setValue(),浪费CPU周期.
我希望放置像QCoreApplication :: processEvents(flags,maxtime)这样的东西,但如果事件队列为空则立即返回.我想要一个等待maxtime或者即使队列为空的版本.这样,我得到了延迟,主线程随时准备响应GUI事件.
Tim*_*imW 14
使用a QFutureWatcher使用信号和插槽监视QFuture对象.
QFutureWatcher watcher;
QProgressDialog pd(...);
connect(&watcher, SIGNAL(progressValueChanged(int)), &pd, SLOT(setValue(int)));
QFuture f = ...
watcher.setFuture(f);
Run Code Online (Sandbox Code Playgroud)