关于 c :QProcess 在执行带参数的 exe 时的问题

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
    2
    env.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();

不过,这当然需要一个实例。