我正在使用QProgressDialog来显示长时间运行的操作的状态,其中包括运行外部可执行文件的步骤。我使用QProcess :: execute()方法运行外部可执行文件。 QprogressDialog可以正常更新标签文本,直到它到达QProcess :: execute()方法,之后它不会更新状态。
如何在运行可执行文件后更新状态。
答案 0 :(得分:2)
QProcess::execute()
是一种阻塞方法:它将阻止其调用线程,直到生成的进程终止。你从主线程调用这个方法,在方法返回之前不会处理UI事件。
要解决此问题,您可以创建QProcess
的实例(而不是使用其静态方法),然后创建一个插槽,继续执行外部进程完成运行后发生的操作,并连接它到QProcess::finished(int, QProcess::ExitStatus)
信号。