Каков правильный путь для основного потока GUI для обновления QProgressDialog в ожидании QFuture. В частности, то, что происходит в этом цикле:Обновление QProgressDialog с QFuture
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
Прямо сейчас у меня есть сон(), как вызов там, но это не является оптимальным (и, конечно, вносит некоторую задержку GUI).
Если я ничего не ставил, основной поток будет иметь петлю-полюс pd.setValue(), теряя процессорные циклы.
Я надеялся положить что-то вроде QCoreApplication :: processEvents (flags, maxtime), но это немедленно возвращается, если очередь событий пуста. Мне нужна версия, которая ждет до maxtime или что-то еще, даже если очередь пуста. Таким образом, я получаю задержку, и основной поток всегда готов реагировать на события GUI.
Отличный ответ TimW. FYI вам не хватает '&' перед 'watcher' в' connect (watcher, ...); '? – sstock
thx, исправлен код – TimW