gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:15 26 4
gpt4 key购买 nike

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

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.

  • 每当使用字符串形式的文件路径时转义反斜杠 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++ - 使用参数执行 exe 时的 QProcess 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com