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