繁体   English   中英

Qt:QProcess结果与提示结果不匹配

[英]Qt: QProcess result doesn't match result at prompt

我正在尝试从Qt执行以下命令:

explorer /select,C:\\Temp Folder\\temp.wav

这应该显示在资源管理器窗口中选择的文件temp.wav 从命令提示符运行时它可以正常工作。

但是,当我在Qt中尝试以下内容时:

QProcess::startDetached(
            "explorer",
            QStringList("/select,C:\\Temp Folder\\temp.wav")
            );

它不起作用 - 它打开资源管理器,但把我放在“我的文档”文件夹中。 如果我将文件夹重命名为没有空格的文件夹(TempFolder),它可以正常工作。

我已经尝试转义文件夹名称中的空格,在整个路径上放置引号,以及许多其他组合没有成功。 许多组合在cmd正常工作,但在通过QProcess::startDetached调用时似乎QProcess::startDetached

最令人困惑的部分是我试图复制的代码来自QtCreator源代码,他们使用类似的东西在资源管理器窗口中打开一个文件。 他们成功地在路径中打开带有空格的文件,但我似乎无法重新创建它!

当你打这样的电话时:

QProcess::startDetached("explorer",
                        QStringList("/select,C:\\Program Files\\7-Zip\\7z.exe"));

Qt将参数字符串转换为:

资源管理器“/ 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”

这是有效的,将做的是预期的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM