Warum ist ein QProgressDialog bekommt nach der Ausführung eines QProcess nicht aktualisiert?

StackOverflow https://stackoverflow.com/questions/3427483

Frage

Ich bin mit einem QProgressDialog den Status eines langen laufenden Betrieb zu zeigen, die beim Betrieb eines externen ausführbaren einen Schritt. Ich betreiben die externe ausführbare Datei mit dem QProcess :: Methode execute (). QProgressDialog funktioniert das Etikett Text zu aktualisieren, bis es die QProcess erreicht :: execute () -Methode, wonach sie nicht den Zustand nicht aktualisiert.

Wie der Zustand zu aktualisieren, nachdem die ausführbare Datei ausgeführt wird.

War es hilfreich?

Lösung

QProcess::execute() eine blockierende Methode: es wird seine Berufung Thread blockiert, bis der erzeugte Prozess beendet wird. Es Sie diese Methode aus dem Haupt-Thread aufrufen, wird UI Ereignisse nicht behandelt werden, bis die Methode zurück.

Um dies zu umgehen, können Sie eine Instanz von QProcess zu erstellen (anstatt mit seinen statischen Methoden) und dann einen Schlitz erstellen, die den Teil der Operation wird fortgesetzt, die Ausführung beendet ist, nach dem externen Prozess geschieht und verbinden Sie es mit dem QProcess::finished(int, QProcess::ExitStatus) Signal .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top