Qfiledialog выбор нескольких файлов
На этом шаге рассмотрим стандартное диалоговое окно выбора файлов.
Использование стандартных окон значительно ускоряет разработку тех приложений, в которых необходимо использовать диалоговые окна выбора файлов, шрифта, цвета и т. д. Вместо того чтобы тратить время на разработку своих собственных классов, можно воспользоваться готовыми классами библиотеки Qt. К достоинствам стандартных диалоговых окон можно отнести и целостность пользовательского интерфейса, т. к. вид окон во всех приложениях, их использующих, будет один и тот же.
Диалоговое окно выбора файлов предназначено для выбора одного или нескольких файлов, а также файлов, находящихся на удаленном компьютере, и поддерживает возможность переименования файлов и создания каталогов.
Класс QFileDialog предоставляет реализацию диалогового окна выбора файлов (рис. 1) и отвечает за создание и работоспособность сразу трех диалоговых окон. Одно из них позволяет осуществлять выбор файла для откры-тия, второе предназначено для выбора пути и имени файла для его сохранения, а третье — для выбора каталога.
Рис.1. Диалоговое окно выбора файлов
Класс QFileDialog унаследован от класса QDialog. Его определение находится в файле QFileDialog.
Этот класс предоставляет следующие статические методы:
- getOpenFileName() — создает диалоговое окно выбора одного файла. Этот метод возвращает значение типа QString, содержащее имя и путь выбранного файла (см. рис. 1);
- getOpenFileNames() — создает диалоговое окно выбора нескольких файлов. Возвращает список строк типа QStringList, содержащих пути и имена файлов;
- getSaveFileName() — создает диалоговое окно сохранения файла. Возвращает имя и путь файла в строковой переменной типа QString;
- getExistingDirectory() — создает окно выбора каталога. Этот метод возвращает значение типа QString, содержащее имя и путь выбранного каталога.
Первым параметром этих методов является указатель на объект-предок, вторым передается текст заголовка окна, третьим — строка, представляющая собой рабочий каталог.
Вызов метода getOpenFileName() запустит диалоговое окно открытия файла (см. рис. 1). Четвертый параметр, передаваемый в этот метод, представляет собой фильтр (или маску), задающий расширение файлов. Например:
Покажем, как можно использовать статический метод getSaveFileName(), предназначенный для диалогового окна записи файла.
Файлы приложения можно взять здесь.
При помощи метода getExistingDirectory() можно предоставить пользователю возможность выбора каталога (рис. 2). Например:
Рис.2. Диалоговое окно выбора папки
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим cтандартное диалоговое окно настройки принтера.
Класс QFileDialog предоставляет диалоговое окно позволяющее пользователям выбирать файлы или директории.
Класс QFileDialog позволяет пользователю перемещаться по иерархическим уровням файловой системы для выбора одного или нескольких файлов (директорий).
Самым простым способом создать диалоговое окно QFileDialog является использование статических функций.
В приведенном примере модальный QFileDialog создается с помощью статической функции. Изначально диалоговое окно отображает содержимое указанной директории "C:/Users/Alexey" и отображает файлы соответствующие установленному фильтру (*.jpg *.jpg *.bmp).
Если требуется установить несколько фильтров, то каждый фильтр разделяется двойным символом точки с запятой ";", например:
QFileDialog можно создать без использования статических функций. Для того, чтобы указать что должен выбрать пользователь в диалоговом окне, следует воспользоваться методом setFileMode():
В приведенном примере режим выбора файлов установлен в AnyFile - что означает, что пользователь может выбрать любой файл и даже указать на несуществующий файл. Такой режим может быть полезен при создании диалогового окна "Сохранить как".
Список режимов выбора файл:
Константа | Значение | Описание |
QFileDialog::AnyFile | 0 | Имя файла независимо от того существует файл или нет. |
QFileDialog::ExistingFile | 1 | Имя одного существующего файла. |
QFileDialog::Directory | 2 | Имя директории. Отображаются и файлы и директории. Однако, нативное окно Windows не поддерживает отображение файлов при выборе директории. |
QFileDialog::ExistingFiles | 3 | Имена нескольких существующих файлов. |
QFileDialog::DirectoryOnly | 4 | Использует для отображения режим Directory и включенную опцию ShowDirsOnly. |
Методы
void | getExistingDirectory ( QWidget parent = 0, string caption = NULL, string dir = NULL, Options options = ShowDirsOnly ) |
string | getOpenFileName ( QWidget $parent = 0, string $caption = NULL, string $dir = NULL, string $filter = NULL, Options $options = NULL ) |
void | getSaveFileName ( QWidget parent = 0, string caption = NULL, string dir = NULL, string filter = NULL, Options options = NULL ) |
void | setFileMode ( FileMode mode ) |
void | setNameFilter ( string filter ) |
void | setViewMode ( ViewMode mode ) |
Описание методов
void QFileDialog:: getExistingDirectory ( QWidget parent = 0, string caption = NULL, string dir = NULL, Options options = ShowDirsOnly )
string QFileDialog:: getOpenFileName ( QWidget $parent = 0, string $caption = NULL, string $dir = NULL, string $filter = NULL, Options $options = NULL )
Открывает окно диалога выбора файла по установленному фильтру
void QFileDialog:: getSaveFileName ( QWidget parent = 0, string caption = NULL, string dir = NULL, string filter = NULL, Options options = NULL )
Согласно официальной документации, в общей сложности можно использовать 8 статических функций, например, статическую функцию getOpenFileName:
Здесь следует отметить, что верхом является QApplication, а не QCoreApplication. Результаты приведены ниже:
Таким образом, можно получить абсолютный путь к требуемому файлу, и файл может работать с QFile.
Давайте посмотрим, что могут делать эти 8 статических функций?
- getExistingDirectoryПолучить только папки
getExistingDirectoryUrl
Подобно getExistingDirectory, функция также предназначена для получения пути к папке. Самое большое отличие состоит в том, что путь в параметре имеет тип QUrl, который предоставляет пользователям возможность выбирать удаленный каталог.
getOpenFileNameПолучить локальные файлы
Эта статическая функция была продемонстрирована в приведенном выше примере и не будет повторяться здесь.
getOpenFileUrlПолучить удаленные файлы
предоставляет пользователям возможность получать пути к удаленным файлам
getOpenFileUrlsПолучить несколько удаленных файлов
может получить несколько путей к удаленным файлам
getOpenFileNamesПолучить несколько локальных файлов
getSaveFileName сохранить локальный файл диалога
getSaveFileUrl Сохранить диалог удаленного файла
Второй вид: метод конструктора-пользовательские детали
Сначала создайте объект QFileDialog:
- Укажите, открывать ли файл или сохранять диалог AcceptMode (2 перечисления)
- Установите уровень детализации информации, отображаемой в диалоге (2 перечисления)
После установки нажмите ОК, диалоговое окно ничего не возвращает (4 перечисления)
За исключением того, что есть одна опция, не написанная выше, остальные являются свойствами. Давайте поговорим об открытых функциях ниже.
Фильтр QDir :: filter здесь не совпадает с фильтром в правом нижнем углу (* .txt) диалогового окна. Фильтр QDir :: filter имеет 16 перечислений, как показано ниже:
Constant | Value | Description |
---|---|---|
QDir::Dirs | 0x001 | Список каталогов, соответствующих фильтрам |
QDir::AllDirs | 0x400 | Список всех каталогов |
QDir::Files | 0x002 | Список всех файлов |
QDir::Drives | 0x004 | Список дисков (игнорируется системами Unix) |
QDir::NoSymLinks | 0x008 | Не перечислять символические ссылки |
QDir::NoDotAndDotDot | NoDot or NoDotDot | Не перечисляйте специальные элементы, такие как "." Или ".." |
QDir::NoDot | 0x2000 | Не перечислять "." |
QDir::NoDotDot | 0x4000 | Не перечисляйте ".." |
QDir::AllEntries | Dirs\Files\Drives | Список каталогов, дисков, символических ссылок |
QDir::Readable | 0x010 | Список файлов с разрешением на чтение для программы. Читаемые значения должны взаимодействовать с папками и файлами |
QDir::Writable | 0x020 | Список файлов с правами на запись для программы. Читаемые значения должны взаимодействовать с папками и файлами |
QDir::Executable | 0x040 | Перечислите файлы, которые программа имеет разрешение на запуск. Читаемые значения должны взаимодействовать с папками и файлами |
QDir::Modified | 0x080 | Список только измененных файлов (игнорируется системами Unix) |
QDir::Hidden | 0x100 | Список скрытых файлов (системы Unix начинаются с ".") |
QDir::System | 0x200 | Список системных файлов |
QDir::CaseSensitive | 0x800 | Фильтры должны быть чувствительны к регистру |
Если QDir :: filter не установлен, по умолчанию это:
Вернуться к поставщику иконок файлов
QFileIconProvider * QFileDialog::iconProvider() const
Это функция для значков, таких как файлы. Используйте эту функцию, чтобы узнать, кто предоставил эти значки. Конечно, значок системы также можно установить самостоятельно.
Возврат к комиссии
QAbstractItemDelegate * QFileDialog::itemDelegate() const
Возвращает делегата элементов списка. Эти делегаты используются для предоставления элементов в диалоговом представлении.
Текстовая метка в диалоге настроек
В диалоговом окне можно установить 5 текстовых меток, как показано ниже:
Вот пример. Я не знаю, почему другой контент не отображается. , , , Однако я попытался не устанавливать LoonIn вручную, и система вывода по умолчанию обнаружила, что результат, возвращаемый на моем компьютере с Windows 10, был "" пустым .
Фильтры файлов, которые возвращают типы MIME
QStringList QFileDialog::mimeTypeFilters() const
QFileDialog предоставляет диалоговое окно для выбора файлов или каталогов.
QFileDialog позволяет пользователям перемещаться по каталогам файловой системы для выбора файлов или каталогов.
Самый простой способ создать QFileDialog - использовать статические функции. Следующее:
В приведенном выше примере мы используем статическую функцию QFileDialog для созданияМодальный диалог. В исходном состоянии диалогового окна будет отображаться содержимое каталога «/ home», и будут отображаться только те файлы, которые соответствуют шаблону, определенному строкой «Файлы изображений (* .jpg * .jpg * .bmp)». Отец диалогового окна установлен на это, а заголовок окна - «Выберите изображение», как показано ниже:
Вы также можете создать файл QFileDialog без использования статических функций. Основное использование выглядит следующим образом
Часто используемые статические функции
Самый простой и удобный способ использовать QFileDialog - использовать его статические функции.Статические функции, поддерживаемые QFileDialog, следующие:
Название функции | описание |
---|---|
QString getExistingDirectory | Получить строку пути к существующей папке |
QUrl getExistingDirectoryUrl | Получить путь QUrl существующей папки. Отличие от вышесказанного в том, что он может получить удаленную папку. |
QString getOpenFileName | Получить строку пути к существующему файлу |
QStringList getOpenFileNames | Получить строку пути к нескольким существующим файлам |
QUrl getOpenFileUrl | Подобно getOpenFileName, разница в том, что он поддерживает удаленный выбор файлов. |
QList<QUrl> getOpenFileNames | Подобно getOpenFileNames, разница в том, что он поддерживает удаленный выбор файлов. |
QString getSaveFileName | Используется для возврата имени файла, файл не обязательно должен существовать |
QUrl getSaveDirectoryUrl | Используется для возврата файла QUrl, файл не должен существовать |
Общие настройки
При использовании статической функции для создания диалогового окна нельзя удалить его родительский элемент во время выполнения диалогового окна. Если вы хотите удалить его отца во время выполнения диалогового окна, мы должны использовать конструктор QFileDialog для создания используемого QFileDialog. Вот некоторые общие настройки.
Настройки открытого режима
Есть два режима, как показано ниже:
постоянный | ценить |
---|---|
QFileDialog::AcceptOpen | 0 |
QFileDialog::AcceptSave | 1 |
В первом режиме отображается диалоговое окно в виде открытия файла, а во втором режиме отображается диалоговое окно в виде сохранения файла.
Установить суффикс по умолчанию
Во многих IDE нам не нужно указывать суффикс файла при сохранении файла, потому что IDE автоматически добавит суффикс для нас, эта функция используется для достижения Суффикс добавляется автоматически функциональный.
Установить открытый каталог
Используется для установки каталога, отображаемого при появлении диалогового окна.
Установить режим файла
В файловом режиме диалогового окна пользователь может выбрать тип и количество элементов, а также можно установить следующие режимы:
постоянный | ценить | описание |
---|---|---|
QFileDialog::AnyFile | 0 | Вернуть имя файла, независимо от того, существует ли файл |
QFileDialog::ExistingFile | 1 | Верните имя файла, файл должен существовать |
QFileDialog::Directory | 2 | Вернитесь к имени каталога, файлы и каталоги будут отображаться, но в собственном диалоговом окне файлов Windows файлы не отображаются в этом режиме. |
QFileDialog::ExistingFiles | 3 | 0 или более существующих имен файлов |
Способ настройки следующий:
Установить фильтр
Установив фильтры, мы можем указать, какие файлы должны отображаться. Вот конкретные варианты:
постоянный | ценить | описание |
---|---|---|
QDir::Dirs | 0x001 | Перечислите каталоги, соответствующие фильтру |
QDir::AllDirs | 0x400 | Список всех каталогов |
QDir::Files | 0x002 | Список файлов |
QDir::Drives | 0x004 | Список дисководов (в Unix этот параметр игнорируется) |
QDir::NoSymLinks | 0x008 | Не перечислять символические ссылки (системы, не поддерживающие символические ссылки, игнорируют этот элемент) |
QDir::NoDotAndDotDot | NoDot | NoDotDot | Не указаны специальные элементы: «.» И «. » |
QDir::NoDot | 0x2000 | Не указывайте специальные элементы: "." |
QDir::NoDotDot | 0x4000 | Не указывайте специальные элементы: «. » |
QDir::AllEntries | Dirs | Files | Drives | Список каталогов, файлов, дисков, символических ссылок |
QDir::Readable | 0x010 | Список файлов, доступных для чтения текущему приложению |
QDir::Writable | 0x020 | Список файлов, доступных для записи текущему приложению |
QDir::Executable | 0x040 | Список файлов, которые могут быть выполнены текущим приложением |
QDir::Modified | 0x080 | Список только файлов, которые были изменены |
QDir::Hidden | 0x100 | Список скрытых файлов |
QDir::System | 0x200 | Список системных файлов |
QDir::CaseSensitive | 0x800 | Фильтр чувствителен к регистру |
Способ использования следующий:
Установить режим сопоставления фильтров
Если строка фильтра содержит пару скобок, которые содержат один или несколько шаблонов подстановочных знаков имени файла, разделенных пробелами, в качестве фильтра будет использоваться только текст, содержащийся в скобках. Следовательно, два вышеуказанных метода записи эквивалентны.
Мы также можем установить несколько фильтров одновременно, как показано ниже:
Во многих IDE, когда мы открываем или создаем новый файл, IDE по умолчанию открывает каталог, который мы открывали в прошлый раз.Это функция, которую хочет выполнить запись истории. Способ использования следующий:
Установите список строк для диалогового окна файла для хранения истории просмотра.
Читайте также: