¿Cuál es la forma correcta para que el subproceso principal de la GUI actualice un QProgressDialog mientras se espera un QFuture? En concreto, lo que sucede en este bucle:Actualizar un QProgressDialog con QFuture
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
Ahora mismo tengo un sueño() como la llamada allí, pero eso no es óptima (y por supuesto introduce cierta latencia GUI).
Si no pongo nada, el hilo principal hará un loop-pole pd.setValue(), desperdiciando ciclos de CPU.
Tenía la esperanza de poner algo así como QCoreApplication :: processEvents (flags, maxtime), pero eso retorna inmediatamente si la cola de eventos está vacía. Me gustaría una versión que espere hasta el momento del tiempo o lo que sea, incluso si la cola está vacía. De esta forma, recibo mi retraso y el hilo principal siempre está listo para responder a los eventos de GUI.
Gran respuesta TimW. FYI ¿te falta un '&' delante de 'watcher' en' connect (watcher, ...); '? – sstock
thx, corrigió el código – TimW