向 QFileDialog 添加一个附加控件

Add an additional control to a QFileDialog

我正在使用本机文件对话框,因此没有 layout() 但想向对话框添加额外的控件。内置的记事本应用程序有一个完美的例子,当它们允许用户 select 所需的编码时(见下文,“保存”按钮的左侧)。是否可以在仍然使用本机对话框的同时在 Qt5 中添加额外的控件?

TL;DR: 完全自定义组件不适用于本机对话框,可以使用 QFileDialog::setNameFilters.

控制过滤器

Qt 对本机 windows 文件对话框的实现使用 ABI::Windows::Storage::Pickers。您可以查看 here 的实现。根据您执行的操作类型,实现使用 IFileOpenPickerIFolderPickerIFileSavePicker.

如果您想操作本机对话框,此 class 必须为您提供这样做的选项。我们可以找到 FileSavePicker class here 的文档。 查看可用选项,您会发现没有提供任何特定自定义 UI 元素的界面。如果您只需要过滤器,QFileDialog 为您提供了使用 QFileDialog::setNameFilters 设置过滤器的能力。如果您需要完全自定义的 control/functionality,很遗憾,您必须提供自己的 QDialog。