2010-08-06 5 views
0

J'utilise un QProgressDialog pour montrer le statut d'une opération de longue durée, qui comprend une étape d'exécution d'un exécutable externe. Je lance l'exécutable externe en utilisant la méthode QProcess :: execute(). QprogressDialog fonctionne très bien en mettant à jour le texte de l'étiquette jusqu'à ce qu'il atteigne la méthode QProcess :: execute(), après quoi il ne met pas à jour l'état.Pourquoi un QProgressDialog n'est-il pas mis à jour après l'exécution d'un QProcess?

Comment mettre à jour l'état après avoir exécuté l'exécutable.

Répondre

2

QProcess::execute() est une méthode de blocage: il va bloquer son thread appelant jusqu'à ce que le processus engendré se termine. Si vous appelez cette méthode à partir du thread principal, les événements de l'interface utilisateur ne seront pas traités tant que la méthode ne sera pas retournée. Pour contourner ce problème, vous pouvez créer une instance de QProcess (au lieu d'utiliser ses méthodes statiques), puis créer un emplacement qui poursuit la partie de l'opération qui se produit après l'exécution du processus externe et la connecter à QProcess::finished(int, QProcess::ExitStatus) signal.

Questions connexes