QProcess issue in executing a exe with arguments
我在设置 QProcess 以使用参数运行可执行文件时遇到问题。相同的Qt代码如下,
1 2 3 4 | QString program ="C:\\Setup.exe"; QStringList arguments; arguments <<"-uninstall"; QProcess::startDetached(program, arguments); |
这个片段的输出是卸载一些程序。但它没有发生。我是不是做错了什么?
但是如果我进入 cmd 提示符并执行相同的操作,例如.,
c:/> "C:/Setup.exe" -卸载
这完美无缺。
至少有两种方法可以解决您的问题。
-
根据文档使用"/"作为目录分隔符:
If you always use"/", Qt will translate your paths to conform to the underlying operating system.
-
根据文档中的示例,在将文件路径作为字符串处理时转义反斜杠:
1
2env.insert("TMPDIR","C:\\\\MyApp\\\\temp"); // Add an environment variable
env.insert("PATH", env.value("Path") +";C:\\\\Bin");
因此,你应该这样写:
1 2 3 4 | QString program ="C:/Setup.exe"; QStringList arguments; arguments <<"-uninstall"; QProcess::startDetached(program, arguments); |
或者这个:
1 2 3 4 | QString program ="C:\\\\Setup.exe"; QStringList arguments; arguments <<"-uninstall"; QProcess::startDetached(program, arguments); |
一般来说,当遇到此类问题时,您总是可以使用以下语法打印出错误字符串以获取更多信息:
1 | qDebug() << myProcess.errorString(); |
不过,这当然需要一个实例。