使用包含空格的参数调用Qprocess - Windows

时间:2015-08-27 14:45:04

标签: windows qt qprocess

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

如果我拨打py2exe.exe中的cmd.exe,则呼叫如下:

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

这样的电话会成功。

我希望通过使用Qt的{​​{1}}应用程序执行此操作,但我无法找到方法,因为Qprocess将删除任何引号({{1} }})在空格出现的地方留下参数。

我似乎错过了什么,有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:7)

如果你以更恰当的方式使用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);
当你有空间论证并且不需要&#34;符号

你只需要在 QStringList

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

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

此程序是Qt docs Here

中列出的示例程序的修改版本