使用包含空格的参数调用 Qpr​​ocess - Windows

calling Qprocess with arguments containing spaces - Windows

我正在尝试使用 qprocess 调用可执行文件并传递一些可能(而且很可能会)包含空格(并非全部)的参数。 可执行文件是一个 python 脚本,已与 Py2exe 一起打包。 python 脚本使用 optparse 来解析参数。

如果我在 cmd.exe 中调用 py2exe.exe 调用是这样的:

pythonExecutable.exe -aarg_a -barg_b -c"path with spaces" -darg_d

这样调用就成功了。

我想通过使用 QprocessQt 应用程序来完成此操作,但我找不到方法,因为 Qprocess 会删除任何引号("") 在出现空格的地方保留参数。

我好像漏掉了什么,有人可以帮忙解决这个问题吗?

如果您以更正确的方式使用 QProcess,那将不是什么大问题

QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"-aarg_a"<< "-barg_b"<< "-c\"path with spaces\""<< "-darg_d";

QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);

正常情况下,当您与 space 有争论并且不需要 " 符号

你只需要在 QStringList

中传递参数
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"a"<< "path with spaces";

QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);

此程序是 Qt 文档中列出的示例程序的修改版本 Here