Qual è il modo corretto per il thread principale della GUI di aggiornare un QProgressDialog durante l'attesa di un QFuture. In particolare, ciò che accade in questo ciclo:Aggiornamento di QProgressDialog con un QFuture
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
In questo momento ho un sonno() come chiamata di lì, ma che non è ottimale (e naturalmente introduce una certa latenza GUI).
Se non inserisco nulla, il thread principale eseguirà il loop-pole pd.setValue(), sprecando i cicli della CPU.
Speravo di inserire qualcosa come QCoreApplication :: processEvents (flags, maxtime), ma che restituisce immediatamente se la coda degli eventi è vuota. Mi piacerebbe una versione che aspetta fino a maxtime o qualsiasi altra cosa anche se la coda è vuota. In questo modo, ottengo il mio ritardo e il thread principale è sempre pronto a rispondere agli eventi della GUI.
Grande risposta TimW. Per tua informazione ti manca un '&' davanti a 'watcher' in' connect (watcher, ...); '? – sstock
thx, risolto il codice – TimW