使用参数执行exe时的QProcess问题

时间:2014-04-23 11:51:18

标签: c++ qt qstring qprocess qtcore

我在设置QProcess以使用参数运行可执行文件时遇到问题。相同的Qt代码如下,

QString program = "C:\Setup.exe";
QStringList arguments;
arguments << "-uninstall";
QProcess::startDetached(program, arguments);

此代码段的输出是卸载某个程序。但它没有发生。我有任何错误吗?

但是如果我去cmd提示并执行像。,

这样的事情

C:/&GT; &#34; C:/Setup.exe" -卸载 这非常有效。

1 个答案:

答案 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();

然而,这肯定需要一个实例。