Класс QFileDialog
Класс QFileDialog предоставляет диалоговое окно, которое позволяет пользователям выбирать файлы или каталоги. Подробнее...
| Заголовок: | #include <QFileDialog> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QDialog |
Открытые типы
| Перечисление | AcceptMode { AcceptOpen, AcceptSave } |
| Перечисление | DialogLabel { LookIn, FileName, FileType, Accept, Reject } |
| Перечисление | FileMode { AnyFile, ExistingFile, Directory, ExistingFiles } |
| Перечисление | Option { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseNativeDialog, ReadOnly, …, DontUseCustomDirectoryIcons } |
| Флаги | Options |
| Перечисление | ViewMode { Detail, List } |
Свойства
|
|
Открытые функции
| QFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()) | |
| QFileDialog(QWidget *parent, Qt::WindowFlags flags) | |
| virtual | ~QFileDialog() |
| QFileDialog::AcceptMode | acceptMode() const |
| QString | defaultSuffix() const |
| QDir | directory() const |
| QUrl | directoryUrl() const |
| QFileDialog::FileMode | fileMode() const |
| QDir::Filters | filter() const |
| QStringList | history() const |
| QAbstractFileIconProvider * | iconProvider() const |
| QAbstractItemDelegate * | itemDelegate() const |
| QString | labelText(QFileDialog::DialogLabel label) const |
| QStringList | mimeTypeFilters() const |
| QStringList | nameFilters() const |
| void | open(QObject *receiver, const char *member) |
| QFileDialog::Options | options() const |
| QAbstractProxyModel * | proxyModel() const |
| bool | restoreState(const QByteArray &state) |
| QByteArray | saveState() const |
| void | selectFile(const QString &filename) |
| void | selectMimeTypeFilter(const QString &filter) |
| void | selectNameFilter(const QString &filter) |
| void | selectUrl(const QUrl &url) |
| QStringList | selectedFiles() const |
| QString | selectedMimeTypeFilter() const |
| QString | selectedNameFilter() const |
| QList<QUrl> | selectedUrls() const |
| void | setAcceptMode(QFileDialog::AcceptMode mode) |
| void | setDefaultSuffix(const QString &suffix) |
| void | setDirectory(const QString &directory) |
| void | setDirectory(const QDir &directory) |
| void | setDirectoryUrl(const QUrl &directory) |
| void | setFileMode(QFileDialog::FileMode mode) |
| void | setFilter(QDir::Filters filters) |
| void | setHistory(const QStringList &paths) |
| void | setIconProvider(QAbstractFileIconProvider *provider) |
| void | setItemDelegate(QAbstractItemDelegate *delegate) |
| void | setLabelText(QFileDialog::DialogLabel label, const QString &text) |
| void | setMimeTypeFilters(const QStringList &filters) |
| void | setNameFilter(const QString &filter) |
| void | setNameFilters(const QStringList &filters) |
| void | setOption(QFileDialog::Option option, bool on = true) |
| void | setOptions(QFileDialog::Options options) |
| void | setProxyModel(QAbstractProxyModel *proxyModel) |
| void | setSidebarUrls(const QList<QUrl> &urls) |
| void | setSupportedSchemes(const QStringList &schemes) |
| void | setViewMode(QFileDialog::ViewMode mode) |
| QList<QUrl> | sidebarUrls() const |
| QStringList | supportedSchemes() const |
| bool | testOption(QFileDialog::Option option) const |
| QFileDialog::ViewMode | viewMode() const |
Реализованные общедоступные функции
| virtual void | setVisible(bool visible) override |
Сигналы
| void | currentChanged(const QString &path) |
| void | currentUrlChanged(const QUrl &url) |
| void | directoryEntered(const QString &directory) |
| void | directoryUrlEntered(const QUrl &directory) |
| void | fileSelected(const QString &file) |
| void | filesSelected(const QStringList &selected) |
| void | filterSelected(const QString &filter) |
| void | urlSelected(const QUrl &url) |
| void | urlsSelected(const QList<QUrl> &urls) |
Статические публичные члены
| QString | getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly) |
| QUrl | getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList()) |
| void | getOpenFileContent(const QString &nameFilter, const std::function<void (const QString &, const QByteArray &)> &fileOpenCompleted) |
| QString | getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options()) |
| QStringList | getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options()) |
| QUrl | getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList()) |
| QList<QUrl> | getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList()) |
| QString | getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options()) |
| QUrl | getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList()) |
| void | saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString()) |
Переопределённые защищённые функции
| virtual void | accept() override |
| virtual void | changeEvent(QEvent *e) override |
| virtual void | done(int result) override |
Подробное описание
Класс QFileDialog позволяет пользователю перемещаться по файловой системе, чтобы выбрать один или несколько файлов или каталог.
Самый простой способ создать QFileDialog — использовать статические функции.
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)")); В приведённом примере модальный QFileDialog создаётся с помощью статической функции. Диалог отображает содержимое каталога "/home/jana" и отображает файлы, соответствующие шаблонам, заданным в строке "Изображения (*.png *.jpg *.bmp)". Родительским окном диалога файлов установлено this, а заголовок окна — "Открыть изображение".
Если вы хотите использовать несколько фильтров, разделяйте их двумя точками с запятой. Например:
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
Вы можете создать свой собственный QFileDialog без использования статических функций. Вызвав setFileMode(), вы можете указать, что пользователь должен выбрать в диалоге:
QFileDialog dialog(this); dialog.setFileMode(QFileDialog::AnyFile);
В приведённом примере режим диалога файлов установлен на AnyFile, что означает, что пользователь может выбрать любой файл или даже указать файл, который не существует. Этот режим полезен для создания диалога "Сохранить как". Используйте ExistingFile, если пользователь должен выбрать существующий файл, или Directory, если должен быть выбран только каталог. См. перечисление QFileDialog::FileMode для полного списка режимов.
Свойство fileMode содержит режим работы диалога; это указывает, какие типы объектов пользователь должен выбрать. Используйте setNameFilter(), чтобы установить фильтр файлов диалога. Например:
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)")); В приведённом примере фильтр установлен на "Images (*.png *.xpm *.jpg)", это означает, что будут отображаться только файлы с расширением png, xpm, или jpg. Вы можете применить несколько фильтров, используя setNameFilters(). Используйте selectNameFilter(), чтобы выбрать один из заданных фильтров в качестве фильтра по умолчанию диалога файлов.
Диалог файлов имеет два режима просмотра: List и Detail. List представляет содержимое текущего каталога как список имён файлов и каталогов. Detail также отображает список имён файлов и каталогов, но предоставляет дополнительную информацию рядом с каждым именем, например, размер файла и дату его изменения. Установите режим с помощью setViewMode():
dialog.setViewMode(QFileDialog::Detail);
Последняя важная функция, которую вам нужно использовать при создании своего диалога файлов, — selectedFiles().
QStringList fileNames;
if (dialog.exec())
fileNames = dialog.selectedFiles(); В приведённом примере создаётся и отображается модальный диалог файлов. Если пользователь нажал «ОК», выбранный файл помещается в fileName.
Рабочий каталог диалога можно установить с помощью setDirectory(). Каждый файл в текущем каталоге может быть выбран с помощью функции selectFile().
Пример Стандартные диалоги демонстрирует использование QFileDialog, а также других встроенных диалогов Qt.
По умолчанию используется нативный диалог файлов платформы, если он имеется. В этом случае виджеты, которые в противном случае использовались бы для построения диалога, не будут созданы, поэтому связанные аксессоры, такие как layout() и itemDelegate(), вернут null. Вы можете установить опцию DontUseNativeDialog, чтобы убедиться, что вместо нативного диалога будет использоваться реализация на основе виджетов.
См. также QDir, QFileInfo, QFile, QColorDialog, QFontDialog, Пример Стандартные диалоги и Пример Qt Widgets - Приложение.
Документация по типу члена
Перечисление QFileDialog::AcceptMode
| Константа | Значение |
|---|---|
QFileDialog::AcceptOpen |
0 |
QFileDialog::AcceptSave |
1 |
enum QFileDialog::DialogLabel
| Постоянная | Значение |
|---|---|
QFileDialog::LookIn |
0 |
QFileDialog::FileName |
1 |
QFileDialog::FileType |
2 |
QFileDialog::Accept |
3 |
QFileDialog::Reject |
4 |
enum QFileDialog::FileMode
Этот перечисление используется для указания того, что пользователь может выбрать в диалоговом окне файла; т. е. что диалоговое окно вернёт, если пользователь нажмёт «ОК».
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::AnyFile |
0 |
Имя файла, существует он или нет. |
QFileDialog::ExistingFile |
1 |
Имя одного существующего файла. |
QFileDialog::Directory |
2 |
Имя каталога. Отображаются как файлы, так и каталоги. Однако, собственное диалоговое окно Windows не поддерживает отображение файлов в окне выбора каталога. |
QFileDialog::ExistingFiles |
3 |
Имена нуля или более существующих файлов. |
См. также setFileMode().
enum QFileDialog::Optionflags QFileDialog::Options
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::ShowDirsOnly |
0x00000001 |
В диалоговом окне отображаются только каталоги. По умолчанию отображаются и файлы, и каталоги. (Действительно только в режиме файла Directory.) |
QFileDialog::DontResolveSymlinks |
0x00000002 |
В диалоговом окне не разрешать ссылки. По умолчанию ссылки разрешаются. |
QFileDialog::DontConfirmOverwrite |
0x00000004 |
Не запрашивать подтверждение, если выбран существующий файл. По умолчанию запрос подтверждения. |
QFileDialog::DontUseNativeDialog |
0x00000008 |
Не использовать собственное диалоговое окно. По умолчанию используется собственное диалоговое окно, если вы не используете подкласс QFileDialog, содержащий макрос Q_OBJECT, или платформа не имеет собственного диалогового окна требуемого типа. |
Примечание: Этот параметр должен быть установлен перед изменением свойств диалогового окна или его отображением.
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::ReadOnly |
0x00000010 |
Указывает, что модель только для чтения. |
QFileDialog::HideNameFilterDetails |
0x00000020 |
Указывает, скрыты ли детали фильтра имен файлов или нет. |
QFileDialog::DontUseCustomDirectoryIcons |
0x00000040 |
Всегда использовать значок каталога по умолчанию. Некоторые платформы позволяют пользователю задать другой значок. Поиск пользовательских значков приводит к значительному снижению производительности при работе с сетью или съемными накопителями. Установка этого значения включит параметр QFileIconProvider::DontUseCustomDirectoryIcons в поставщике значков. Это значение перечисления было добавлено в Qt 5.2. |
Тип Options является типом-синонимом для QFlags<Option>. Он хранит логическое ИЛИ комбинацию значений Option.
enum QFileDialog::ViewMode
Это перечисление описывает режим отображения диалогового окна файла; т. е. какая информация о каждом файле будет отображена.
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::Detail |
0 |
Отображает значок, имя и детали для каждого элемента в каталоге. |
QFileDialog::List |
1 |
Отображает только значок и имя для каждого элемента в каталоге. |
См. также setViewMode().
Документация по свойству
acceptMode : AcceptMode
Это свойство содержит режим приема диалога.
Режим действия определяет, предназначен ли диалог для открытия или сохранения файлов.
По умолчанию это свойство установлено в AcceptOpen.
Функции доступа:
| QFileDialog::AcceptMode | acceptMode() const |
| void | setAcceptMode(QFileDialog::AcceptMode mode) |
См. также AcceptMode.
defaultSuffix : QString
Расширение, добавляемое к имени файла, если другое расширение не указано.
Это свойство задаёт строку, которая будет добавлена к имени файла, если у него ещё нет расширения. Расширение обычно используется для указания типа файла (например, "txt" указывает текстовый файл).
Если первый символ - точка ('.') , она удаляется.
Функции доступа:
| QString | defaultSuffix() const |
| void | setDefaultSuffix(const QString &suffix) |
fileMode : FileMode
Это свойство содержит режим работы с файлами диалога.
Режим работы с файлами определяет количество и тип элементов, которые пользователь должен выбрать в диалоге.
По умолчанию это свойство установлено в AnyFile.
Эта функция установит метки для FileName и Accept DialogLabel. Возможно задать пользовательский текст после вызова setFileMode().
Функции доступа:
| QFileDialog::FileMode | fileMode() const |
| void | setFileMode(QFileDialog::FileMode mode) |
См. также FileMode.
options : Options
Это свойство содержит различные параметры, влияющие на внешний вид диалога.
По умолчанию все параметры отключены.
Параметры (особенно параметр DontUseNativeDialogs) должны быть установлены до изменения свойств диалога или его отображения.
Установка параметров во время отображения диалога не гарантирует немедленного влияния на диалог (в зависимости от параметра и платформы).
Установка параметров после изменения других свойств может привести к тому, что эти значения не будут иметь эффекта.
Функции доступа:
| QFileDialog::Options | options() const |
| void | setOptions(QFileDialog::Options options) |
См. также setOption() и testOption().
[since 5.6] supportedSchemes : QStringList
Это свойство содержит схемы URL, к которым диалог файла должен разрешать навигацию.
Установка этого свойства позволяет ограничить тип URL, который пользователь сможет выбрать. Это способ для приложения объявить протоколы, которые оно будет поддерживать для получения содержимого файла. Пустой список означает, что ограничений нет (по умолчанию). Поддержка локальных файлов ("схема file") подразумевается и всегда включена; нет необходимости включать её в ограничение.
Это свойство было добавлено в Qt 5.6.
Функции доступа:
| QStringList | supportedSchemes() const |
| void | setSupportedSchemes(const QStringList &schemes) |
viewMode : ViewMode
Это свойство содержит способ отображения файлов и каталогов в диалоге.
По умолчанию используется режим Detail для отображения информации о файлах и каталогах.
Функции доступа:
| QFileDialog::ViewMode | viewMode() const |
| void | setViewMode(QFileDialog::ViewMode mode) |
См. также ViewMode.
Документация по функциям-членам
QFileDialog::QFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString())
Создаёт диалог выбора файла с заданным parent и caption, который изначально отображает содержимое указанного каталога directory. Содержимое каталога фильтруется перед отображением в диалоге, используя список фильтров, разделённый точкой с запятой, указанный в filter.
QFileDialog::QFileDialog(QWidget *parent, Qt::WindowFlags flags)
Создаёт диалог выбора файла с заданным parent и флагами виджета flags.
[signal] void QFileDialog::currentChanged(const QString &path)
При изменении текущего файла для локальных операций, этот сигнал испускается с новым именем файла как параметром path.
См. также filesSelected().
[signal, since 5.2] void QFileDialog::currentUrlChanged(const QUrl &url)
При изменении текущего файла, этот сигнал испускается с новым URL файла как параметром url.
Эта функция была добавлена в Qt 5.2.
См. также urlsSelected().
[signal] void QFileDialog::directoryEntered(const QString &directory)
Этот сигнал испускается для локальных операций, когда пользователь вводит directory.
[signal, since 5.2] void QFileDialog::directoryUrlEntered(const QUrl &directory)
Этот сигнал испускается, когда пользователь вводит directory.
Эта функция была добавлена в Qt 5.2.
[signal] void QFileDialog::fileSelected(const QString &file)
При изменении выбора для локальных операций и принятии диалога, этот сигнал испускается с (возможно пустым) выбранным file.
См. также currentChanged() и QDialog::Accepted.
[signal] void QFileDialog::filesSelected(const QStringList &selected)
При изменении выбора для локальных операций и принятии диалога, этот сигнал испускается со списком (возможно пустым) выбранных selected файлов.
См. также currentChanged() и QDialog::Accepted.
[signal] void QFileDialog::filterSelected(const QString &filter)
Этот сигнал испускается, когда пользователь выбирает filter.
[signal, since 5.2] void QFileDialog::urlSelected(const QUrl &url)
При изменении выбора и принятии диалога, этот сигнал испускается с (возможно пустым) выбранным url.
Эта функция была добавлена в Qt 5.2.
См. также currentUrlChanged() и QDialog::Accepted.
[signal, since 5.2] void QFileDialog::urlsSelected(const QList<QUrl> &urls)
При изменении выбора и принятии диалога, этот сигнал испускается со списком (возможно пустым) выбранных urls.
Эта функция была добавлена в Qt 5.2.
См. также currentUrlChanged() и QDialog::Accepted.
[virtual] QFileDialog::~QFileDialog()
Уничтожает диалог выбора файла.
[override virtual protected] void QFileDialog::accept()
Переопределяет: QDialog::accept().
[override virtual protected] void QFileDialog::changeEvent(QEvent *e)
Реализует: QWidget::changeEvent(QEvent *event).
QDir QFileDialog::directory() const
Возвращает каталог, который в данный момент отображается в диалоге.
См. также setDirectory().
[since 5.2] QUrl QFileDialog::directoryUrl() const
Возвращает URL каталога, который в данный момент отображается в диалоге.
Эта функция была добавлена в Qt 5.2.
См. также setDirectoryUrl().
[override virtual protected] void QFileDialog::done(int result)
Реализует: QDialog::done(int r).
QDir::Filters QFileDialog::filter() const
Возвращает фильтр, используемый при отображении файлов.
См. также setFilter().
[static] QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)
Это удобная статическая функция, которая возвращает существующий каталог, выбранный пользователем.
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks); Эта функция создаёт модальный диалог выбора файла с заданным виджетом parent. Если parent не nullptr, диалог будет показан, центрированный над родительским виджетом.
Рабочий каталог диалога устанавливается в dir, а заголовок — в caption. Любой из них может быть пустой строкой, в этом случае будет использован текущий каталог и стандартный заголовок соответственно.
Аргумент options содержит различные параметры работы диалога, см. перечисление QFileDialog::Option для получения дополнительной информации о флагах, которые можно передать. Для обеспечения использования родного диалога выбора файлов, необходимо установить ShowDirsOnly.
В Windows и macOS эта статическая функция будет использовать родной диалог выбора файлов, а не QFileDialog. Однако родной диалог Windows не поддерживает отображение файлов в диалоге выбора каталога. Для отображения файлов с помощью QFileDialog необходимо установить DontUseNativeDialog.
В Unix/X11 обычное поведение диалога выбора файлов — разрешать и следовать символичным ссылкам. Например, если /usr/tmp является символичной ссылкой на /var/tmp, диалог выбора файлов переключится на /var/tmp после ввода /usr/tmp. Если options включает DontResolveSymlinks, диалог выбора файлов будет обрабатывать символичные ссылки как обычные каталоги.
В Windows диалог будет запускать блокирующую модальную очередь событий, которая не будет обрабатывать QTimers, а если parent не nullptr, то он разместит диалог сразу под строкой заголовка родительского виджета.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QFileDialog.
См. также getOpenFileName(), getOpenFileNames() и getSaveFileName().
[static, since 5.2] QUrl QFileDialog::getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList())
Это удобная статическая функция, которая возвращает существующий каталог, выбранный пользователем. Если пользователь нажимает «Отмена», она возвращает пустой URL.
Функция используется аналогично QFileDialog::getExistingDirectory(). В частности, parent, caption, dir и options используются точно так же.
Основное отличие от QFileDialog::getExistingDirectory() заключается в возможности выбора удалённого каталога пользователем. Именно поэтому тип возвращаемого значения и тип dir — QUrl.
Аргумент supportedSchemes позволяет ограничить тип URL, который пользователь сможет выбрать. Это способ для приложения объявить протоколы, которые оно будет поддерживать для извлечения содержимого файла. Пустой список означает, что ограничений нет (по умолчанию). Поддержка локальных файлов ("file" схема) подразумевается и всегда включена; нет необходимости включать её в ограничение.
Если это возможно, эта статическая функция будет использовать родной диалог выбора файлов, а не QFileDialog. На платформах, которые не поддерживают выбор удалённых файлов, Qt позволит выбрать только локальные файлы.
Эта функция была добавлена в Qt 5.2.
См. также getExistingDirectory(), getOpenFileUrl(), getOpenFileUrls() и getSaveFileUrl().
[static, since 5.13] void QFileDialog::getOpenFileContent(const QString &nameFilter, const std::function<void (const QString &, const QByteArray &)> &fileOpenCompleted)
Это удобная статическая функция, которая возвращает содержимое файла, выбранного пользователем.
Эта функция используется для доступа к локальным файлам в Qt for WebAssembly, где среда веб-песочницы накладывает ограничения на способы такого доступа. Её реализация заставит браузер отобразить родной диалог выбора файлов, где пользователь выбирает файл на основе параметра nameFilter.
Она также может использоваться на других платформах, где она будет использовать QFileDialog по умолчанию.
Функция асинхронная и возвращает немедленно. Обратный вызов fileOpenCompleted будет вызван, когда файл был выбран и его содержимое было считано в память.
auto fileContentReady = [](const QString &fileName, const QByteArray &fileContent) {
if (fileName.isEmpty()) {
// No file was selected
} else {
// Use fileName and fileContent
}
};
QFileDialog::getOpenFileContent("Images (*.png *.xpm *.jpg)", fileContentReady); Эта функция была добавлена в Qt 5.13.
[static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
Это удобная статическая функция, возвращающая существующий файл, выбранный пользователем. Если пользователь нажимает «Отмена», она возвращает пустую строку.
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)")); Функция создаёт модальный диалог выбора файла с заданным виджетом parent. Если parent не nullptr, диалог будет показан, центрированный над родительским виджетом.
Рабочий каталог диалога выбора файла устанавливается в dir. Если dir содержит имя файла, файл будет выбран. Отображаются только файлы, которые соответствуют заданному filter. Выбранный фильтр устанавливается в selectedFilter. Параметры dir, selectedFilter и filter могут быть пустыми строками. Если нужно несколько фильтров, разделяйте их «;;», например:
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
Аргумент options содержит различные параметры работы диалога, см. перечисление QFileDialog::Option для получения дополнительной информации о флагах, которые можно передать.
Заголовок диалога устанавливается в caption. Если caption не указан, будет использован стандартный заголовок.
В Windows и macOS эта статическая функция будет использовать родной диалог выбора файлов, а не QFileDialog.
В Windows диалог будет запускать блокирующую модальную очередь событий, которая не будет обрабатывать QTimers, а если parent не nullptr, то он разместит диалог сразу под строкой заголовка родительского виджета.
В Unix/X11 обычное поведение диалога выбора файлов — разрешать и следовать символичным ссылкам. Например, если /usr/tmp является символичной ссылкой на /var/tmp, диалог выбора файлов переключится на /var/tmp после ввода /usr/tmp. Если options включает DontResolveSymlinks, диалог выбора файлов будет обрабатывать символичные ссылки как обычные каталоги.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QFileDialog.
См. также getOpenFileNames(), getSaveFileName() и getExistingDirectory().
[static] QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
Эта удобная статическая функция возвращает один или несколько существующих файлов, выбранных пользователем.
QStringList files = QFileDialog::getOpenFileNames(
this,
"Select one or more files to open",
"/home",
"Images (*.png *.xpm *.jpg)"); Эта функция создаёт модальный диалог выбора файла с заданным виджетом parent. Если parent не nullptr, диалог будет показан центрированным над родительским виджетом.
Рабочий каталог диалога выбора файла будет установлен в dir. Если dir включает имя файла, файл будет выбран. Фильтр установлен на filter, так что будут показаны только файлы, соответствующие фильтру. Выбранный фильтр установлен в selectedFilter. Параметры dir, selectedFilter и filter могут быть пустыми строками. Если вам нужны несколько фильтров, разделяйте их «;;», например:
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
Заголовок диалога установлен в caption. Если caption не указан, будет использован стандартный заголовок.
В Windows и macOS эта статическая функция будет использовать родной диалог выбора файла, а не QFileDialog.
В Windows диалог запустит блокирующий модальный цикл обработки событий, который не будет отправлять QTimers, и если parent не nullptr, то диалог будет позиционирован сразу под строкой заголовка родителя.
В Unix/X11 стандартное поведение диалога выбора файла — разрешать и следовать символам-ссылкам. Например, если /usr/tmp — это символ-ссылка на /var/tmp, диалог выбора файла изменится на /var/tmp после ввода /usr/tmp. Аргумент options содержит различные параметры выполнения диалога, см. перечисление QFileDialog::Option для получения дополнительной информации о флагах, которые вы можете передать.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QFileDialog.
См. также getOpenFileName(), getSaveFileName() и getExistingDirectory().
[static, since 5.2] QUrl QFileDialog::getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())
Это удобная статическая функция, которая возвращает существующий файл, выбранный пользователем. Если пользователь нажимает «Отмена», возвращается пустая ссылка.
Функция используется аналогично QFileDialog::getOpenFileName(). В частности, parent, caption, dir, filter, selectedFilter и options используются точно так же.
Основное отличие от QFileDialog::getOpenFileName() заключается в возможности выбора пользователем удалённого файла. Вот почему тип возвращаемого значения и тип dir — QUrl.
Аргумент supportedSchemes позволяет ограничить тип URL-адресов, которые пользователь сможет выбрать. Это способ для приложения объявить протоколы, которые оно будет поддерживать для получения содержимого файла. Пустой список означает, что ограничений нет (по умолчанию). Поддержка локальных файлов («схема file») подразумевается и всегда включена; её не нужно включать в ограничения.
Если это возможно, эта статическая функция будет использовать родной диалог выбора файла, а не QFileDialog. На платформах, которые не поддерживают выбор удалённых файлов, Qt позволит выбрать только локальные файлы.
Эта функция была введена в Qt 5.2.
См. также getOpenFileName(), getOpenFileUrls(), getSaveFileUrl() и getExistingDirectoryUrl().
[static, since 5.2] QList<QUrl> QFileDialog::getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())
Это удобная статическая функция, которая вернёт один или несколько выбранных пользователем файлов. Если пользователь нажимает «Отмена», возвращается пустой список.
Функция используется аналогично QFileDialog::getOpenFileNames(). В частности, parent, caption, dir, filter, selectedFilter и options используются точно так же.
Основное отличие от QFileDialog::getOpenFileNames() заключается в возможности выбора пользователем удалённых файлов. Вот почему тип возвращаемого значения и тип dir — соответственно QList<QUrl> и QUrl.
Аргумент supportedSchemes позволяет ограничить тип URL-адресов, которые пользователь сможет выбрать. Это способ для приложения объявить протоколы, которые оно будет поддерживать для получения содержимого файла. Пустой список означает, что ограничений нет (по умолчанию). Поддержка локальных файлов («схема file») подразумевается и всегда включена; её не нужно включать в ограничения.
Если это возможно, эта статическая функция будет использовать родной диалог выбора файла, а не QFileDialog. На платформах, которые не поддерживают выбор удалённых файлов, Qt позволит выбрать только локальные файлы.
Эта функция была введена в Qt 5.2.
См. также getOpenFileNames(), getOpenFileUrl(), getSaveFileUrl() и getExistingDirectoryUrl().
[static] QString QFileDialog::getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())
Это удобная статическая функция, которая возвращает имя файла, выбранное пользователем. Файл не обязательно должен существовать.
Она создаёт модальный диалог выбора файла с заданным виджетом parent. Если parent не nullptr, диалог будет показан центрированным над родительским виджетом.
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"/home/jana/untitled.png",
tr("Images (*.png *.xpm *.jpg)")); Рабочий каталог диалога выбора файла будет установлен в dir. Если dir включает имя файла, файл будет выбран. Показываются только файлы, соответствующие фильтру filter. Выбранный фильтр установлен в selectedFilter. Параметры dir, selectedFilter и filter могут быть пустыми строками. Несколько фильтров разделяются символом «;;». Например:
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
Аргумент options содержит различные параметры выполнения диалога, см. перечисление QFileDialog::Option для получения дополнительной информации о флагах, которые вы можете передать.
Фильтр по умолчанию можно выбрать, установив selectedFilter в нужное значение.
Заголовок диалога установлен в caption. Если caption не указан, используется стандартный заголовок.
В Windows и macOS эта статическая функция будет использовать родной диалог выбора файла, а не QFileDialog.
В Windows диалог запустит блокирующий модальный цикл обработки событий, который не будет отправлять QTimers, и если parent не nullptr, то диалог будет позиционирован сразу под строкой заголовка родителя. В macOS с родным диалогом выбора файла аргумент filter игнорируется.
В Unix/X11 стандартное поведение диалога выбора файла — разрешать и следовать символам-ссылкам. Например, если /usr/tmp — это символ-ссылка на /var/tmp, диалог выбора файла изменится на /var/tmp после ввода /usr/tmp. Если options включает DontResolveSymlinks, диалог выбора файла будет обрабатывать символы-ссылки как обычные каталоги.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QFileDialog.
См. также getOpenFileName(), getOpenFileNames() и getExistingDirectory().
[static, since 5.2] QUrl QFileDialog::getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())
Это удобная статическая функция, которая возвращает файл, выбранный пользователем. Файл не обязательно должен существовать. Если пользователь нажимает «Отмена», возвращается пустая ссылка.
Функция используется аналогично QFileDialog::getSaveFileName(). В частности, parent, caption, dir, filter, selectedFilter и options используются точно так же.
Основное отличие от QFileDialog::getSaveFileName() заключается в возможности выбора пользователем удалённого файла. Вот почему тип возвращаемого значения и тип dir — QUrl.
Аргумент supportedSchemes позволяет ограничить тип URL-адресов, которые пользователь сможет выбрать. Это способ для приложения объявить протоколы, которые оно будет поддерживать для сохранения содержимого файла. Пустой список означает, что ограничений не применяется (по умолчанию). Поддержка локальных файлов («file» схема) подразумевается и всегда включена; нет необходимости включать её в ограничение.
Когда это возможно, эта статическая функция будет использовать родной диалог выбора файла, а не QFileDialog. На платформах, которые не поддерживают выбор удалённых файлов, Qt позволит выбрать только локальные файлы.
Данная функция была добавлена в Qt 5.2.
См. также getSaveFileName(), getOpenFileUrl(), getOpenFileUrls() и getExistingDirectoryUrl().
QStringList QFileDialog::history() const
Возвращает историю навигации диалога выбора файла в виде списка путей.
См. также setHistory().
QAbstractFileIconProvider *QFileDialog::iconProvider() const
Возвращает поставщик значков, используемый диалогом выбора файла.
См. также setIconProvider().
QAbstractItemDelegate *QFileDialog::itemDelegate() const
Возвращает делегат элементов, используемый для отображения элементов в представлениях диалога выбора файла.
См. также setItemDelegate().
QString QFileDialog::labelText(QFileDialog::DialogLabel label) const
Возвращает текст, отображаемый в диалоге выбора файла в указанной метке label.
См. также setLabelText().
[since 5.2] QStringList QFileDialog::mimeTypeFilters() const
Возвращает фильтры типов MIME, которые используются в этом диалоге выбора файла.
Данная функция была добавлена в Qt 5.2.
См. также setMimeTypeFilters().
QStringList QFileDialog::nameFilters() const
Возвращает фильтры типов файлов, которые используются в этом диалоге выбора файла.
См. также setNameFilters().
void QFileDialog::open(QObject *receiver, const char *member)
Эта функция подключает один из своих сигналов к слоту, указанному receiver и member. Конкретный сигнал зависит от того, является ли fileMode ExistingFiles (в этом случае используется filesSelected()), или что-то другое (в этом случае используется fileSelected()).
Сигнал будет отключен от слота при закрытии диалога.
QAbstractProxyModel *QFileDialog::proxyModel() const
Возвращает модель прокси, используемую диалогом выбора файла. По умолчанию прокси не установлен.
См. также setProxyModel().
bool QFileDialog::restoreState(const QByteArray &state)
Восстанавливает макет диалога, историю и текущую директорию из состояния, указанного в state.
Обычно используется в сочетании с QSettings для восстановления размера из предыдущего сеанса.
Возвращает false в случае ошибок.
[static, since 5.14] void QFileDialog::saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString())
Это удобная статическая функция, которая сохраняет fileContent в файл, используя имя и расположение файла, выбранное пользователем. fileNameHint может быть предоставлено для предложения имени файла пользователю.
Эта функция используется для сохранения файлов в локальной файловой системе в Qt for WebAssembly, где веб-песочница накладывает ограничения на способ такого доступа. Её реализация отобразит браузерный диалог выбора файла, где пользователь производит выбор файла.
Также может быть использована на других платформах, где она будет использовать QFileDialog по умолчанию.
Функция асинхронна и возвращает немедленно.
QByteArray imageData; // obtained from e.g. QImage::save()
QFileDialog::saveFile("myimage.png", imageData); Данная функция была добавлена в Qt 5.14.
QByteArray QFileDialog::saveState() const
Сохраняет состояние макета диалога, истории и текущей директории.
Обычно используется в сочетании с QSettings для сохранения размера для будущего сеанса. Версия данных хранится как часть данных.
void QFileDialog::selectFile(const QString &filename)
Выбирает указанный filename в диалоге выбора файла.
См. также selectedFiles().
[since 5.2] void QFileDialog::selectMimeTypeFilter(const QString &filter)
Устанавливает текущий фильтр типа MIME filter.
Данная функция была добавлена в Qt 5.2.
void QFileDialog::selectNameFilter(const QString &filter)
Устанавливает текущий фильтр типа файла filter. Несколько фильтров могут быть переданы в filter, разделяя их точками с запятой или пробелами.
См. также setNameFilter(), setNameFilters() и selectedNameFilter().
[since 5.2] void QFileDialog::selectUrl(const QUrl &url)
Выбирает указанный url в диалоге выбора файла.
Примечание: Неродной QFileDialog поддерживает только локальные файлы.
Данная функция была добавлена в Qt 5.2.
См. также selectedUrls().
QStringList QFileDialog::selectedFiles() const
Возвращает список строк, содержащих абсолютные пути выбранных файлов в диалоге. Если файлы не выбраны или режим не ExistingFiles или ExistingFile, selectedFiles() возвращает текущий путь в области просмотра.
См. также selectedNameFilter() и selectFile().
[since 5.9] QString QFileDialog::selectedMimeTypeFilter() const
Возвращает тип MIME файла, выбранного пользователем в диалоге выбора файла.
Данная функция была добавлена в Qt 5.9.
QString QFileDialog::selectedNameFilter() const
Возвращает фильтр, выбранный пользователем в диалоге выбора файла.
См. также selectedFiles().
[since 5.2] QList<QUrl> QFileDialog::selectedUrls() const
Возвращает список URL, содержащий выбранные файлы в диалоге. Если файлы не выбраны или режим не ExistingFiles или ExistingFile, selectedUrls() возвращает текущий путь в области просмотра.
Данная функция была добавлена в Qt 5.2.
См. также selectedNameFilter() и selectUrl().
void QFileDialog::setDirectory(const QString &directory)
Устанавливает текущую directory диалога выбора файла.
Примечание: В iOS, если вы установите directory в QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last(), будет использован родной диалог выбора изображения для доступа к фотоальбому пользователя. Имя возвращаемого файла может быть загружено с помощью QFile и родственных API. Для активации этой функции, Info.plist, назначенный QMAKE_INFO_PLIST в файле проекта, должен содержать ключ NSPhotoLibraryUsageDescription. См. документацию Info.plist от Apple для получения дополнительной информации об этом ключе. Эта функция была добавлена в Qt 5.5.
См. также directory().
void QFileDialog::setDirectory(const QDir &directory)
Это перегруженная функция.
[since 5.2] void QFileDialog::setDirectoryUrl(const QUrl &directory)
Устанавливает текущую directory url диалога выбора файла.
Примечание: Неродной QFileDialog поддерживает только локальные файлы.
Примечание: В Windows можно передавать URL-адреса, представляющие один из виртуальных папок, такие как "Компьютер" или "Сеть". Это делается путём передачи QUrl с использованием схемы clsid, за которой следует значение CLSID без фигурных скобок. Например, URL clsid:374DE290-123F-4565-9164-39C4925E467B обозначает расположение загрузки. Полный список возможных значений см. в документации MSDN по KNOWNFOLDERID. Эта функция была добавлена в Qt 5.5.
Эта функция была добавлена в Qt 5.2.
См. также directoryUrl() и QUuid.
void QFileDialog::setFilter(QDir::Filters filters)
Устанавливает фильтр, используемый моделью, в filters. Фильтр используется для указания типа файлов, которые должны быть показаны.
См. также filter().
void QFileDialog::setHistory(const QStringList &paths)
Устанавливает историю навигации диалога выбора файла, содержащую заданные paths.
См. также history().
void QFileDialog::setIconProvider(QAbstractFileIconProvider *provider)
Устанавливает поставщика значков, используемого диалогом выбора файла, в указанный provider.
См. также iconProvider().
void QFileDialog::setItemDelegate(QAbstractItemDelegate *delegate)
Устанавливает делегат элементов, используемый для отрисовки элементов в представлениях в диалоге выбора файла, в заданный delegate.
Любой существующий делегат будет удалён, но не удалён. QFileDialog не принимает на себя владение delegate.
Предупреждение: Не следует использовать один и тот же экземпляр делегата для нескольких представлений. Это может привести к некорректной или неинтуитивной работе с редактированием, так как каждое представление, подключенное к заданному делегату, может получить сигнал closeEditor() и попытаться получить доступ к, изменить или закрыть редактор, который уже был закрыт.
Обратите внимание, что используемая модель — QFileSystemModel. Она имеет пользовательские роли данных элементов, которые описываются перечислением Roles. Если вам нужны только пользовательские значки, можно использовать QFileIconProvider.
См. также itemDelegate(), setIconProvider() и QFileSystemModel.
void QFileDialog::setLabelText(QFileDialog::DialogLabel label, const QString &text)
Устанавливает text, отображаемый в диалоге выбора файла, в указанной label.
См. также labelText().
[since 5.2] void QFileDialog::setMimeTypeFilters(const QStringList &filters)
Устанавливает filters, используемые в диалоге выбора файла, из списка типов MIME.
Удобный метод для setNameFilters(). Использует QMimeType для создания фильтра имени из шаблонов глобального поиска и описания, определённых в каждом типе MIME.
Используйте application/octet-stream для фильтра «Все файлы (*)», так как это базовый тип MIME для всех файлов.
Вызов setMimeTypeFilters перезаписывает любые ранее установленные фильтры имён и изменяет возвращаемое значение nameFilters().
QStringList mimeTypeFilters({"image/jpeg", // will show "JPEG image (*.jpeg *.jpg *.jpe)
"image/png", // will show "PNG image (*.png)"
"application/octet-stream" // will show "All files (*)"
});
QFileDialog dialog(this);
dialog.setMimeTypeFilters(mimeTypeFilters);
dialog.exec(); Эта функция была добавлена в Qt 5.2.
См. также mimeTypeFilters().
void QFileDialog::setNameFilter(const QString &filter)
Устанавливает фильтр, используемый в диалоге выбора файла, в заданный filter.
Если filter содержит пару скобок, содержащих один или несколько шаблонов подстановок имён файлов, разделённых пробелами, то в качестве фильтра используется только текст, находящийся в скобках. Это означает, что все эти вызовы эквивалентны:
dialog.setNameFilter("All C++ files (*.cpp *.cc *.C *.cxx *.c++)");
dialog.setNameFilter("*.cpp *.cc *.C *.cxx *.c++"); Примечание: В родном диалоге выбора файлов Android используется тип MIME, соответствующий заданному фильтру имени, так как поддерживаются только типы MIME.
См. также setMimeTypeFilters() и setNameFilters().
void QFileDialog::setNameFilters(const QStringList &filters)
Устанавливает filters, используемые в диалоге выбора файла.
Обратите внимание, что фильтр *.* не является переносимым, потому что историческое предположение о том, что расширение файла определяет тип файла, не является согласованным на всех операционных системах. Возможно наличие файла без точки в его имени (например, Makefile). В родном диалоге выбора файлов Windows *.* будет соответствовать таким файлам, в то время как в других типах диалогов он может не соответствовать. Поэтому лучше использовать *, если вы хотите выбрать любой файл.
const QStringList filters({"Image files (*.png *.xpm *.jpg)",
"Text files (*.txt)",
"Any files (*)"
});
QFileDialog dialog(this);
dialog.setNameFilters(filters);
dialog.exec(); setMimeTypeFilters() имеет преимущество в предоставлении всех возможных фильтров имён для каждого типа файла. Например, изображения JPEG имеют три возможных расширения; если ваше приложение может открывать такие файлы, выбор типа MIME image/jpeg в качестве фильтра позволит вам открыть все из них.
См. также nameFilters().
void QFileDialog::setOption(QFileDialog::Option option, bool on = true)
Устанавливает заданный option в состояние включения, если on равно true; в противном случае, сбрасывает заданный option.
Параметры (особенно параметр DontUseNativeDialogs) должны быть установлены перед изменением свойств диалога или отображением диалога.
Установка параметров во время видимости диалога не гарантирует немедленного эффекта на диалоге (в зависимости от параметра и платформы).
Установка параметров после изменения других свойств может привести к тому, что эти значения не будут иметь никакого эффекта.
См. также options и testOption().
void QFileDialog::setProxyModel(QAbstractProxyModel *proxyModel)
Устанавливает модель для представлений в заданный proxyModel. Это полезно, если вы хотите изменить базовую модель; например, добавить столбцы, отфильтровать данные или добавить диски.
Любой существующий прокси-модель будет удалён, но не удалён. Диалог выбора файла примет на себя владение proxyModel.
См. также proxyModel().
void QFileDialog::setSidebarUrls(const QList<QUrl> &urls)
Устанавливает urls, расположенные в боковой панели.
Например:
QList<QUrl> urls;
urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")
<< QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::MusicLocation).first());
QFileDialog dialog;
dialog.setSidebarUrls(urls);
dialog.setFileMode(QFileDialog::AnyFile);
if (dialog.exec()) {
// ...
} Диалог выбора файла будет выглядеть следующим образом:
См. также sidebarUrls().
[override virtual] void QFileDialog::setVisible(bool visible)
Переопределяет: QDialog::setVisible(bool visible).
QList<QUrl> QFileDialog::sidebarUrls() const
Возвращает список URL-адресов, которые в настоящее время находятся в боковой панели.
См. также setSidebarUrls().
bool QFileDialog::testOption(QFileDialog::Option option) const
Возвращает true если заданный option включён; в противном случае возвращает false.
См. также options и setOption().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qfiledialog.html