Qt中使用QProcess类掉用其它的程序,然后等调用结束后在执行其它动作,结果出错了。
比如说,我要给某台设备升级,而升级文件是压缩文件,这样我们在升级前,需要先将升级文件解压,目前调用的是7z.exe去解压的,而解压是成功了的。但是升级时确失败了,我的代码结构大致如下,
QProcess pro;
pro.execute("7z.exe",commandLine);
upgrade();
结果upgrade()函数在解压之前就完成了,导致升级失败,pro.execute("7z.exe",commandLine);就像开辟了一个次线程似的。
然后我就将代码修改至如下,
QProcess pro;
pro.execute("7z.exe",commandLine);
if(pro.waitForFinished())
{
upgrade();
}
结果发现upgrade()函数永远不执行。
最后我用改成如下,
QProcess pro;
pro.execute("7z.exe",commandLine);
pro.waitForFinished(3000)
upgrade();
结果还是先执行upgrade(),再执行pro.execute("7z.exe",commandLine);
不知道大家有没有好的方法,能够使得pro.execute("7z.exe",commandLine);先执行完,然后在去执行upgrade();
多谢!