一、QProcess启动进程
1、启动不带参数进程
QProcess program;
QString cmd = "xxx.exe"; //选择自己要执行exe程序
program.start(cmd);
program.waitForFinished();
2、启动带参数进程
QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
program.waitForFinished();
二、waitForFinished的问题
QProcess中waitForFinished的问题,当我们执行一个超过30s的动作的时候,int msecs = 30000,那么就会直接finish,像遇到解压文件这种情况并且要等finish时候用解压的文件的时候,就会出现问题。
如何解决?
方法1:waitForFinished(-1); 表示一直等待,直到进程结束。比如:
QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
program.waitForFinished(-1);
方法2:循环等待waitForFinished()==true,表示进程结束。比如:
QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
while(!program.waitForFinished())
{
//等待,进程没有结束
Sleep(1000);
}