Класс QFileDialog
Класс QFileDialog предоставляет диалог, позволяющий пользователям выбирать файлы или каталоги. Подробнее...
| Заголовок: | #include <QFileDialog> |
| qmake: | QT += widgets |
| Наследует: | QDialog |
Типы публичного доступа
| Перечисление | AcceptMode { AcceptOpen, AcceptSave } |
| Перечисление | DialogLabel { LookIn, FileName, FileType, Accept, Reject } |
| Перечисление | FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly } |
| Перечисление | 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 |
| QFileIconProvider * | 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(QFileIconProvider *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().
Пример Standard Dialogs показывает, как использовать QFileDialog, а также другие встроенные диалоговые окна Qt.
По умолчанию, если платформа имеет собственное диалоговое окно, будет использовано платформенно-ориентированное диалоговое окно. В этом случае виджеты, которые в противном случае использовались бы для построения диалогового окна, не будут созданы, поэтому такие методы доступа, как layout() и itemDelegate() вернут null. Вы можете установить опцию DontUseNativeDialog, чтобы убедиться, что вместо этого будет использоваться реализация на основе виджетов вместо нативного диалогового окна.
См. также QDir, QFileInfo, QFile, QColorDialog, QFontDialog, Standard Dialogs Example, и Application Example.
Документация по типам членов
enum 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 |
Имена одного или нескольких существующих файлов. |
Это значение устарело с Qt 4.5:
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::DirectoryOnly |
4 |
Используйте Directory и setOption(ShowDirsOnly, true) вместо этого. |
См. также setFileMode().
enum QFileDialog::Optionflags QFileDialog::Options
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::ShowDirsOnly |
0x00000001 |
Отображать только каталоги в диалоговом окне файла. По умолчанию отображаются как файлы, так и каталоги. (Действительно только в режиме файла Directory.) |
QFileDialog::DontResolveSymlinks |
0x00000002 |
Не разрешать ссылки на символы в диалоговом окне файла. По умолчанию ссылки на символы разрешаются. |
QFileDialog::DontConfirmOverwrite |
0x00000004 |
Не запрашивать подтверждения при выборе существующего файла. По умолчанию запрос подтверждения запрашивается. |
QFileDialog::DontUseNativeDialog |
0x00000010 |
Не использовать собственное диалоговое окно файла. По умолчанию используется собственное диалоговое окно файла, за исключением случаев, когда вы используете подкласс QFileDialog, содержащий макрос Q_OBJECT, или платформа не имеет диалогового окна нужного типа. |
Примечание: Этот параметр необходимо установить до изменения свойств диалогового окна или показа диалогового окна.
| Постоянная | Значение | Описание |
|---|---|---|
QFileDialog::ReadOnly |
0x00000020 |
Указывает, что модель является только для чтения. |
QFileDialog::HideNameFilterDetails |
0x00000040 |
Указывает, скрыты или нет подробности фильтра имен файлов. |
QFileDialog::DontUseSheet |
0x00000008 |
В предыдущих версиях Qt статические функции создавали лист по умолчанию, если статическая функция получала родителя. Это больше не поддерживается и ничего не делает в Qt 4.5. Статические функции всегда будут модальными диалогами приложения. Если вы хотите использовать листы, используйте QFileDialog::open() вместо этого. |
QFileDialog::DontUseCustomDirectoryIcons |
0x00000080 |
Всегда использовать значок каталога по умолчанию. Некоторые платформы позволяют пользователю установить другой значок. Поиск пользовательского значка сильно влияет на производительность при работе с сетью или съемными носителями. Установка этого значения включит параметр 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) следует устанавливать перед изменением свойств диалога или отображением диалога.
Установка параметров во время видимости диалога не гарантирует немедленного влияния на диалог (в зависимости от параметра и платформы).
Установка параметров после изменения других свойств может привести к тому, что эти значения не будут иметь эффекта.
Это свойство было введено в Qt 4.5.
Функции доступа:
| QFileDialog::Options | options() const |
| void | setOptions(QFileDialog::Options options) |
См. такжеsetOption() и testOption().
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] void QFileDialog::currentUrlChanged(const QUrl &url)
При изменении текущего файла генерируется этот сигнал с новым URL файла в качестве параметра url.
Эта функция была введена в Qt 5.2.
См. такжеurlsSelected().
[signal] void QFileDialog::directoryEntered(const QString &directory)
Этот сигнал генерируется для локальных операций, когда пользователь входит в directory.
Эта функция была введена в Qt 4.3.
[signal] 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.
Эта функция была введена в Qt 4.3.
[signal] void QFileDialog::urlSelected(const QUrl &url)
При изменении выбора и подтверждении диалога генерируется этот сигнал с выбранным (возможно пустым) url.
Эта функция была введена в Qt 5.2.
См. такжеcurrentUrlChanged() и QDialog::Accepted.
[signal] 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().
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
Возвращает фильтр, используемый при отображении файлов.
Эта функция была добавлена в Qt 4.4.
См. также 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 не поддерживает отображение файлов в диалоге выбора каталога. Вам необходимо передать DontUseNativeDialog для отображения файлов с помощью QFileDialog.
В Unix/X11 обычное поведение диалога выбора файлов — разрешение и следование символическим ссылкам. Например, если /usr/tmp является символической ссылкой на /var/tmp, диалог выбора файлов переключится на /var/tmp после ввода /usr/tmp. Если options включает DontResolveSymlinks, диалог выбора файлов будет рассматривать символические ссылки как обычные директории.
В Windows диалог запускает блокирующую модальную очередь событий, которая не обрабатывает QTimers, и если parent не nullptr, то он позиционирует диалог сразу под строкой заголовка родительского виджета.
Предупреждение: Не удаляйте parent во время выполнения диалога. Если вы хотите это сделать, вы должны создать диалог самостоятельно, используя один из конструкторов QFileDialog.
См. также getOpenFileName(), getOpenFileNames() и getSaveFileName().
[static] 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] 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] 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())
Это удобная статическая функция, которая возвращает выбранный пользователем файл. Если пользователь нажимает «Отмена», она возвращает пустой URL.
Функция используется аналогично 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] 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] 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().
QFileIconProvider *QFileDialog::iconProvider() const
Возвращает поставщик значков, используемый диалогом выбора файла.
См. также setIconProvider().
QAbstractItemDelegate *QFileDialog::itemDelegate() const
Возвращает делегат элементов, используемый для отображения элементов в представлениях в диалоге выбора файла.
См. также setItemDelegate().
QString QFileDialog::labelText(QFileDialog::DialogLabel label) const
Возвращает текст, отображаемый в диалоге выбора файла для указанной метки label.
См. также setLabelText().
QStringList QFileDialog::mimeTypeFilters() const
Возвращает фильтры типов MIME, используемые в этом диалоге выбора файла.
Эта функция была добавлена в Qt 5.2.
См. также setMimeTypeFilters().
QStringList QFileDialog::nameFilters() const
Возвращает фильтры типов файлов, используемые в этом диалоге выбора файла.
Эта функция была добавлена в Qt 4.4.
См. также setNameFilters().
void QFileDialog::open(QObject *receiver, const char *member)
Эта функция подключает один из своих сигналов к слоту, указанному receiver и member. Конкретный сигнал зависит от fileMode. Если ExistingFiles, то это filesSelected(), а если другое значение, то fileSelected().
Сигнал будет отключён от слота при закрытии диалога.
Эта функция была добавлена в Qt 4.5.
QAbstractProxyModel *QFileDialog::proxyModel() const
Возвращает прокси-модель, используемую диалогом выбора файла. По умолчанию прокси не задан.
См. также setProxyModel().
bool QFileDialog::restoreState(const QByteArray &state)
Восстанавливает макет диалога, историю и текущий каталог до указанного в state состояния.
Обычно используется в сочетании с QSettings для восстановления размера из предыдущей сессии.
Возвращает false в случае ошибок.
Эта функция была добавлена в Qt 4.3.
[static] void QFileDialog::saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString())
Это удобная статическая функция, которая сохраняет fileContent в файл, используя имя и расположение файла, выбранное пользователем. fileNameHint можно указать для предложения имени файла пользователю.
Эта функция используется для сохранения файлов в локальной файловой системе в Qt for WebAssembly, где среда web-песочницы накладывает ограничения на то, как может происходить такой доступ. Её реализация отобразит в браузере системный диалог выбора файла, где пользователь выбирает файл.
Она также может использоваться на других платформах, где она будет использовать QFileDialog по умолчанию.
Функция асинхронная и возвращается немедленно.
QByteArray imageData; // obtained from e.g. QImage::save()
QFileDialog::saveFile("myimage.png", imageData); Эта функция была добавлена в Qt 5.14.
QByteArray QFileDialog::saveState() const
Сохраняет состояние макета диалога, истории и текущего каталога.
Обычно используется в сочетании с QSettings, чтобы сохранить размер для будущей сессии. В данные сохраняется и номер версии.
Эта функция была добавлена в Qt 4.3.
void QFileDialog::selectFile(const QString &filename)
Выделяет указанный filename в диалоге выбора файла.
См. также selectedFiles().
void QFileDialog::selectMimeTypeFilter(const QString &filter)
Устанавливает текущий фильтр типов MIME filter.
Эта функция была добавлена в Qt 5.2.
void QFileDialog::selectNameFilter(const QString &filter)
Устанавливает текущий фильтр типов файлов filter. Несколько фильтров могут быть переданы в filter, разделяя их точкой с запятой или пробелами.
Эта функция была добавлена в Qt 4.4.
См. также setNameFilter(), setNameFilters() и selectedNameFilter().
void QFileDialog::selectUrl(const QUrl &url)
Выделяет указанный url в диалоге выбора файла.
Примечание: Неявно-реализованный QFileDialog поддерживает только локальные файлы.
Эта функция была добавлена в Qt 5.2.
См. также selectedUrls().
QStringList QFileDialog::selectedFiles() const
Возвращает список строк, содержащих абсолютные пути выбранных файлов в диалоге. Если файлы не выбраны или режим не ExistingFiles или ExistingFile, selectedFiles() содержит текущий путь в области просмотра.
См. также selectedNameFilter() и selectFile().
QString QFileDialog::selectedMimeTypeFilter() const
Возвращает тип MIME файла, выбранного пользователем в диалоге выбора файла.
Эта функция была добавлена в Qt 5.9.
QString QFileDialog::selectedNameFilter() const
Возвращает фильтр, выбранный пользователем в диалоге выбора файла.
Эта функция была добавлена в Qt 4.4.
См. также selectedFiles().
QList<QUrl> QFileDialog::selectedUrls() const
Возвращает список ссылок, содержащих выбранные файлы в диалоге. Если файлы не выбраны или режим не ExistingFiles или ExistingFile, selectedUrls() содержит текущий путь в области просмотра.
Эта функция была добавлена в Qt 5.2.
См. также selectedNameFilter() и selectUrl().
void QFileDialog::setDirectory(const QString &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)
Это перегруженный метод.
void QFileDialog::setDirectoryUrl(const QUrl &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. Фильтр используется для указания типа файлов, которые должны быть показаны.
Этот метод был введен в Qt 4.4.
См. также filter().
void QFileDialog::setHistory(const QStringList &paths)
Устанавливает историю просмотров диалога выбора файла, содержащую заданные paths.
См. также history().
void QFileDialog::setIconProvider(QFileIconProvider *provider)
Устанавливает поставщик иконок, используемый диалогом выбора файла, на указанный provider.
См. также iconProvider().
void QFileDialog::setItemDelegate(QAbstractItemDelegate *delegate)
Устанавливает делегат элементов, используемый для отображения элементов в представлениях в диалоге выбора файла, на заданный delegate.
Предупреждение: Не следует использовать один и тот же экземпляр делегата для нескольких представлений. Это может привести к некорректной или неинтуитивной работе редактирования, так как каждое представление, связанное с заданным делегатом, может получить сигнал closeEditor() и попытаться получить доступ, изменить или закрыть редактор, который уже был закрыт.
Обратите внимание, что используемая модель — QFileSystemModel. Она имеет пользовательские роли данных элементов, которые описаны в перечислении Roles. Вы можете использовать QFileIconProvider, если вам нужны только настраиваемые значки.
См. также itemDelegate(), setIconProvider() и QFileSystemModel.
void QFileDialog::setLabelText(QFileDialog::DialogLabel label, const QString &text)
Устанавливает отображаемый в диалоге выбора файла текст в указанной метке.
См. также labelText().
void QFileDialog::setMimeTypeFilters(const QStringList &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.
Этот метод был введен в Qt 4.4.
См. также setMimeTypeFilters() и setNameFilters().
void QFileDialog::setNameFilters(const QStringList &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 в качестве фильтра позволит вам открыть все из них.
Этот метод был введен в Qt 4.4.
См. также nameFilters().
void QFileDialog::setOption(QFileDialog::Option option, bool on = true)
Устанавливает заданный option в состояние включения, если on равно true; в противном случае очищает заданный option.
Параметры (особенно параметр DontUseNativeDialogs) должны быть установлены до изменения свойств диалога или показа диалога.
Установка параметров во время отображения диалога не гарантирует немедленного эффекта на диалог (в зависимости от параметра и платформы).
Установка параметров после изменения других свойств может привести к тому, что эти значения не будут иметь никакого эффекта.
Этот метод был введен в Qt 4.5.
См. также options и testOption().
void QFileDialog::setProxyModel(QAbstractProxyModel *proxyModel)
Устанавливает модель для представлений на указанный proxyModel. Это полезно, если вы хотите изменить основную модель; например, добавить столбцы, отфильтровать данные или добавить диски.
Любая существующая модель прокси будет удалена, но не удалена. Диалог выбора файла примет владение proxyModel.
Этот метод был введен в Qt 4.3.
См. также 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()) {
// ...
} Диалог выбора файла будет выглядеть следующим образом:
Этот метод был введен в Qt 4.3.
См. также sidebarUrls().
void QFileDialog::setVisible(bool visible)
Реализует: QDialog::setVisible(bool visible).
QList<QUrl> QFileDialog::sidebarUrls() const
Возвращает список URL-адресов, которые в данный момент находятся в боковой панели.
Этот метод был введен в Qt 4.3.
См. также setSidebarUrls().
bool QFileDialog::testOption(QFileDialog::Option option) const
Возвращает true , если заданный option включен; в противном случае возвращает false.
Этот метод был введен в Qt 4.5.
См. также options и setOption().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qfiledialog.html