向 QFileDialog 添加附加控件

发布于 2025-01-10 20:59:57 字数 279 浏览 0 评论 0 原文

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

记事本文件保存对话框

I am using the Native file dialog, so there is no layout() but want to add an additional control to the dialog. The builtin Notepad application has a perfect example when they allow the user to select the desired encoding (see below, to the left of the "Save" button). Is it possible to add an additional control in Qt5 while still using the native dialog?

Notepad file save dialog

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝眼泪 2025-01-17 20:59:58

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


Qt 的本机 Windows 文件对话框的实现使用 ABI::Windows::Storage::Pickers。您可以在此处查看实现< /a>.根据您执行的操作类型,实现使用 IFileOpenPickerIFolderPickerIFileSavePicker

如果您想操作本机对话框,此类必须为您提供执行此操作的选项。我们可以找到 FileSavePicker 类的文档 此处
查看可用选项,您会发现没有界面可提供任何特定的自定义 UI 元素。如果您只需要过滤器,QFileDialog 可以让您使用 QFileDialog::setNameFilters。如果您需要完全自定义的控件/功能,不幸的是您必须提供自己的 QDialog。

TL;DR: Completely custom components are not available with native dialogs, filters can be controlled using QFileDialog::setNameFilters.


Qt's implementation of the native windows file dialog uses ABI::Windows::Storage::Pickers. You can check the implementation out here. Depending on the type of action you perform, the implementation uses IFileOpenPicker, IFolderPicker or IFileSavePicker.

If you want to manipulate the native dialog, this class would have to provide you with the option to do so. We can find the documentation for the FileSavePicker class here.
Going through the available options, you see that there is no interface to provide any specific custom UI element. If you would only need the filter, the QFileDialog provides you with the ability to set a filter using QFileDialog::setNameFilters. If you need a completely custom control/functionality, you unfortunately have to provide your own QDialog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文