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

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

此代码段的输出是卸载某些程序。但这没有发生。我有什么错误吗?

但是,如果我进入cmd提示符并执行类似的操作,

c:/>“C:/Setup.exe”-卸载
这很完美。

最佳答案

至少有两个选项可以解决您的问题。

  • 根据文档,使用'/'作为目录分隔符:

  • 每当使用文件路径作为字符串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();
    

    当然,这需要一个实例。

    关于c++ - QProcess问题执行带有参数的exe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23243436/

    10-14 20:11
    查看更多