关于QProcess start()方法的若干注意事项,例如路径有空格

1、摘录博客

https://blog.csdn.net/zrfzrf/article/details/78840063https://blog.csdn.net/zrfzrf/article/details/78840063

比如

QProcess *p = new QProcess;

p->start("d:\a b\test.exe");

因为ab之间有空格, test.exe不会被调用.

网上找了些办法, 比如用p->startDetached("d:\a b\test.exe");

虽然可以调用test.exe, 但无法用p->state()判断test.exe的进程状态, 比如是否正在运行.

最终从外网找到终极解决办法, 简单实用.

先用QDir::setCurrent("d:\a b\")将当前目录设置到外部执行文件目录

然后直接使用 p->start("test.exe");

必要的话, 再把目录设回来:

QDir::setCurrent(QApplication::applicationDirPath())

完毕!firecat本人亲测可行!

2、摘录博客

Qt利用QProcess打开路径(含中文路径和空格)的方法_ninicaoyuan的博客-CSDN博客_process 中文路径QString strLogPath = QCoreApplication::applicationDirPath() + "/Log"; QProcess process(this); process.setProgram("cmd"); QStringList argument; argument << "/c" <<"start"<<""""<<strLogPath;//双引号必须加,例 cmd...https://blog.csdn.net/ninicaoyuan/article/details/112557076QString strLogPath =  QCoreApplication::applicationDirPath() + "/Log";
QProcess process(this);
process.setProgram("cmd");
QStringList argument;
argument << "/c" <<"start"<<""""<<strLogPath;//双引号必须加,例 cmd start C:\Users\Student>start "" "C:\Program Files"
process.setArguments(argument);
process.start();
process.waitForStarted(); //等待程序启动
process.waitForFinished();//等待程序关闭
 

3、start和startDetached两种启动方式的区别?

找度娘看看

猜你喜欢

转载自blog.csdn.net/libaineu2004/article/details/122481581