为什么执行QProcess后QProgressDialog没有更新?

时间:2010-08-06 20:22:43

标签: c++ qt progressdialog qprocess

我正在使用QProgressDialog来显示长时间运行的操作的状态,其中包括运行外部可执行文件的步骤。我使用QProcess :: execute()方法运行外部可执行文件。 QprogressDialog可以正常更新标签文本,直到它到达QProcess :: execute()方法,之后它不会更新状态。

如何在运行可执行文件后更新状态。

1 个答案:

答案 0 :(得分:2)

QProcess::execute()是一种阻塞方法:它将阻止其调用线程,直到生成的进程终止。你从主线程调用这个方法,在方法返回之前不会处理UI事件。

要解决此问题,您可以创建QProcess的实例(而不是使用其静态方法),然后创建一个插槽,继续执行外部进程完成运行后发生的操作,并连接它到QProcess::finished(int, QProcess::ExitStatus)信号。