Quelle est la méthode appropriée pour que le thread principal de l'interface graphique mette à jour un QProgressDialog en attendant un QFuture. Plus précisément, ce qui se passe dans cette boucle:Mise à jour d'un QProgressDialog avec un QFuture
QProgressDialog pd(...);
QFuture f = ...;
while (!f.isFinished()) {
pd.setValue(f.progressValue());
// what goes here?
}
En ce moment, j'ai un sommeil() comme appel là-bas, mais ce n'est pas optimale (et bien sûr une certaine latence introduit GUI).
Si je ne mets rien, le thread principal sera pd.setValue(), ce qui gaspillera des cycles CPU.
J'espérais mettre quelque chose comme QCoreApplication :: processEvents (flags, maxtime), mais cela revient immédiatement si la file d'attente d'événements est vide. Je voudrais une version qui attend jusqu'à maxtime ou quoi que ce soit même si la file d'attente est vide. De cette façon, je reçois mon retard et le thread principal est toujours prêt à répondre aux événements GUI.
Grande réponse TimW. FYI vous manque un '&' devant 'watcher' dans' connect (observateur, ...); '? – sstock
thx, fixé le code – TimW