2010-08-06 90 views
0

我正在使用QProgressDialog來顯示長時間運行的操作的狀態,其中包括運行外部可執行文件的步驟。我使用QProcess :: execute()方法運行外部可執行文件。 QprogressDialog可以很好地更新標籤文本,直到它到達QProcess :: execute()方法,之後它不更新狀態。爲什麼QProgressDialog在執行QProcess後沒有得到更新?

如何在運行可執行文件後更新狀態。

回答

2

QProcess::execute()是一種阻塞方法:它會阻塞其調用線程,直到生成的進程終止。它從主線程調用此方法,直到方法返回纔會處理UI事件。

要解決此問題,您可以創建QProcess(而不是使用其靜態方法)的實例,然後創建一個插槽,以繼續外部過程完成運行後發生的操作部分,並將其連接到QProcess::finished(int, QProcess::ExitStatus)信號。

相關問題