我在设置QProcess以使用参数运行可执行文件时遇到问题。相同的Qt代码如下,
QString program = "C:\Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);
此代码段的输出是卸载某个程序。但它没有发生。我有任何错误吗?
但是如果我去cmd提示并执行像。,
这样的事情C:/&GT; &#34; C:/Setup.exe" -卸载 这非常有效。
答案 0 :(得分:1)
至少有两种方法可以解决您的问题。
根据文档使用'/'作为目录分隔符:
如果您总是使用“/”,Qt会将您的路径转换为符合基础操作系统。
使用文件路径作为字符串as per an example from the documentation:
时,请使用反斜杠转义env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable
env.insert("PATH", env.value("Path") + ";C:\\Bin");
因此,你应该写这样的东西:
QString program = "C:/Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);
或者这个:
QString program = "C:\\Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);
通常,在遇到此类问题时,您始终可以使用以下语法打印出错误字符串以获取更多信息:
qDebug() << myProcess.errorString();
然而,这肯定需要一个实例。