Qt:QProcess 结果与提示时的结果不匹配
Qt: QProcess result doesn't match result at prompt
我正在尝试从Qt执行以下命令:
explorer /select,C:Temp Foldertemp.wav
这应该显示temp.wav
在资源管理器窗口中选择的文件。从命令提示符运行时,它可以正常工作。
但是,当我在Qt中尝试以下内容时:
QProcess::startDetached(
"explorer",
QStringList("/select,C:\Temp Folder\temp.wav")
);
它不起作用 - 它打开资源管理器,但将我放在"我的文档"文件夹中。如果我将文件夹重命名为没有空格的文件夹(TempFolder),它可以正常工作。
我尝试转义文件夹名称中的空格,在整个路径周围放置引号,以及许多其他组合,但没有成功。许多组合在cmd
中正常工作,但在通过 QProcess::startDetached
调用时似乎不起作用。
最令人困惑的部分是,我尝试复制的代码来自QtCreator源代码,他们使用类似的东西在资源管理器窗口中打开文件。他们成功地打开了路径中带有空格的文件,但我似乎无法重新创建它!
当您进行此类调用时:
QProcess::startDetached("explorer",
QStringList("/select,C:\Program Files\7-Zip\7z.exe"));
Qt 将参数字符串转换为:
explorer "/select,C:\Program Files\7-Zip\7z.exe"
这不是打开资源管理器并选择给定文件的有效选项。发生这种情况是因为您的单个参数有空格,Qt 用引号转义它。要解决此问题,您需要进行以下调用:
QProcess::startDetached("explorer",
(QStringList() << "/select," << "C:\Program Files\7-zip\7z.exe"));
即传递两个参数。这将生成以下字符串:
explorer/select, "C:\Program Files\7-Zip\7z.exe"
这是有效的,并且会做预期的事情。
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- C++公式与指定值不匹配的结果
- 我的 AQTime 结果中的次数总和与我测量的响应时间不匹配
- 使用 Pycrc 和 PHP 代码的 CRC32 计算与预期结果不匹配
- 在提升匹配结果中查找不匹配
- Java 和 C++ 加密结果不匹配
- 类型id结果不匹配
- CLOCKS_PER_SEC与std::clock()的结果不匹配
- OpenCV idft() 和 MATLAB ifft2 的结果不匹配
- Qt:QProcess 结果与提示时的结果不匹配