我发现很少answers但他们不能在我的Qt5.3.1版本上工作。
我有一个QProcess
我需要以文件路径作为参数运行:
/home/user/.wine/drive_c/users/user/Local Settings / LocalLow / A B C /测试/ TEST1
当我尝试通过此QProcess
对象运行程序时,它失败了,因为它没有转义空格。然后我尝试使用QDir::toNativeSeparators
修复它,但它不起作用:
QDir::toNativeSeparators("/home/user/.wine/drive_c/users/user/Local Settings/LocalLow/A B C/test/test1")
返回与我作为参数传递的完全相同的字符串。
这就是我开始这个过程的方式:
QProcess process;
QStringList arguments;
arguments.append(binaryDir);
process.setArguments(arguments);
process.setProgram("wine");
process.start();
P.S。我无法手动修复它,因为路径从外面传到某处。
答案 0 :(得分:1)
您可以将参数作为QStringList传递给QProcess,这不会考虑空格。
这是一个用您喜欢的文件管理器进行测试的小片段。
static QString arg="/home/user/.wine/drive_c/Program Files/";
static QProcess p;
p.start("/usr/bin/dolphin", QStringList(arg));
答案 1 :(得分:0)
有两种可能的方法。您可以使用转义引号(在引号之间插入字符串):
QStringList arguments;
QString str="\"/home/user/.wine/drive_c/users/user/Local Settings/LocalLow/A B C/test/test1\"";
arguments.append(str);
或者使用QStringList()
的{{1}}重载自动转义。