启动外部程序的两种方式:
一体式
void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite) 外部程序启动后。将随主程序的退出而退出。
分离式
void QProcess::startDetached(const QString & program, const QStringList & arguments, const QString & workingDirectory = QString(), qint64 * pid = 0) 外部程序启动后,当主程序退出时并不退出。而是继续执行。
1. QProcess pLreleaseQM(this);
2. QStringList listArgment;
3.
4. listArgment << strFile;
5.
6. pLreleaseQM.execute("lrelease.exe", listArgment);
7. //分离式,主程序退出时并不终止,而是继续运行
8. pLreleaseQM.waitForStarted();
9. //阻塞,直到外部程序结束
10. pLreleaseQM.waitForFinished();
当程序路径中含有空格的时候,仅设置程序路径program是无法被识别的。解决方法是再将程序路径传递给arguments。
1. //1-不带空格。能够启动
2. process->start("F:/AppInst/115/115com/115com.exe");
3.
4. //2-带空格,无法启动
5. process->start("C:/Program Files/HaoZip/HaoZip.exe");
6.
7. //3-带空格,使用带參模式。能够启动
8. process->start("C:/Program Files/HaoZip/HaoZip.exe", QStringList("C:/Program Files/HaoZip/HaoZip.exe"));
详细内容可查看:Qt技巧:QProcess与外部程序的调用
另外可看:QT 随笔 QProcess中waitForFinished的坑