Почему QProgressDialog не обновляется после выполнения QProcess? - PullRequest
0 голосов
/ 07 августа 2010

Я использую QProgressDialog, чтобы показать состояние длительной операции, которая включает в себя этап запуска внешнего исполняемого файла. Я запускаю внешний исполняемый файл, используя метод QProcess :: execute (). QprogressDialog прекрасно работает, обновляя текст метки, пока он не достигнет метода QProcess :: execute (), после чего не обновляет состояние.

Как обновить состояние после запуска исполняемого файла.

1 Ответ

2 голосов
/ 07 августа 2010

QProcess::execute() - это метод блокировки: он будет блокировать свой вызывающий поток до тех пор, пока не будет завершен вызываемый процесс. При вызове этого метода из основного потока события пользовательского интерфейса не будут обрабатываться до тех пор, пока метод не вернется.

Чтобы обойти это, вы можете создать экземпляр QProcess (вместо использования его статических методов), а затем создать слот, который продолжает часть операции, которая происходит после завершения внешнего процесса, и подключить его к QProcess::finished(int, QProcess::ExitStatus) сигнал.

...