【发布时间】:2019-07-08 16:39:06
【问题描述】:
我目前正在为 Windows 开发一个 qt 应用程序。用户需要能够选择一个目录来加载所有文件。我有一个与此相关的问题。这似乎很愚蠢,但我一直得到相同的反馈。最终用户对文件对话框感到困惑,因为他们导航到该文件夹,但它不显示任何文件。即使他们正在选择一个文件夹,这也会让他们感到困惑,因为他们看不到目录中的文件。
所以我决定深入研究它并进行一些研究。从我发现的情况来看,似乎基本上有两种选择。 IFileOpenDialog 和 FOS_PICKFOLDERS,这是我目前通过 qt 的 QFileDialog 使用的。或SHBrowseForFolder,它确实有效,但非常有限。
我是否缺少任何选项?似乎IFileOpenDialog 显示文件而不允许用户选择它们是理想的。有没有办法做到这一点?我发现很多旧信息都说这是不可能的,但没有确定是最近的。
【问题讨论】:
-
哪个版本的qt? 5?
-
是的,我在 5.12
-
我建议不要使用 SHBrowseForFolder,正如你所说,它是有限的,并且充满了错误。我会将 IFileOpenDialog 与 FOS_PICKFOLDERS 一起使用,SHBrowseForFolder 肯定更好(顺便说一句,它也不显示文件)。
-
我认为 SHBrowseForFolder 只是更清楚你在做什么。 IFileOpenDialog 留下一个很大的空白空间,上面写着“没有项目符合您的搜索”。我理解其中的原因,但典型用户习惯于在那里查看文件并立即认为应用程序找不到要加载的任何内容。我觉得有一个没有被覆盖的中间立场。
-
您也可以实现自己的选择文件夹对话框,它会显示文件,但您可以选择仅选择文件夹。你可以使用这个:doc.qt.io/qt-5/qtwidgets-itemviews-dirview-example.html: