1、摘录博客
比如
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两种启动方式的区别?
找度娘看看