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();
|
不过,这当然需要一个实例。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268851.html