Справочная документация по Pickers
Средства выбора файлов и каталогов разделяются на страницы PickerPage
и диалоги PickerDialog.
Они разработаны специально для приложений ОС Аврора.
В ОС Аврора приложения работают в изолированной среде (песочнице) и не имеют прямого доступа ко всей файловой системе устройства. Это сделано в целях безопасности и конфиденциальности данных пользователя. Чтобы приложение могло получить доступ к файлу, пользователь должен явно разрешить это действие через системный интерфейс. Эту задачу решают компоненты Pickers (средства выбора). Они предоставляют стандартизированный, привычный для пользователя UI и гарантируют, что приложение получит доступ только к тем файлам, которые были явно выбраны. Использование системных пикеров также избавляет разработчика от необходимости самостоятельно реализовывать навигацию по файловой системе, фильтрацию по MIME-типам и обработку системных разрешений.
Средства выбора файлов и каталогов используются вместе со стеком страниц
PageStack.
Тип PageStack
определяет жизненный цикл средства выбора при условии,
что оно не создаётся каким-либо другим способом.
Рекомендуется добавлять средство выбора файлов и каталогов в
PageStack
в виде компонента или URL.
После этого объект PageStack
сможет управлять его жизненным циклом. Каждое средство выбора файлов и каталогов
перед удалением возвращает выбранные элементы. При этом не имеет значения,
выбирается один или несколько элементов.
Страницы для выбора файлов
Типы PickerPage представляют собой страницы и позволяют выбирать один файл за раз.
Они интегрируются в общий стек навигации приложения, занимая весь экран,
что удобно для глубокой навигации по директориям или выбора медиафайлов с предпросмотром.
| ContentPickerPage | ContentPicker позволяет выбрать один документ, изображение, видеофайл или файл с музыкой |
| DocumentPickerPage | Средство выбора одного документа |
| DownloadPickerPage | Средство выбора одного загруженного файла |
| FilePickerPage | Средство выбора одного файла |
| FolderPickerPage | Средство выбора одного каталога |
| ImagePickerPage | Средство выбора одного изображения |
| MusicPickerPage | Средство выбора одного файла с музыкой |
| PrinterPickerPage | Средство выбора принтера |
| VideoPickerPage | Средство выбора одного видеофайла |
Диалоги для выбора файлов
Типы PickerDialog представляют собой диалоги и позволяют выбирать сразу несколько файлов.
Они открываются поверх текущей страницы в виде модального окна, не занимая весь экран.
| FolderPickerDialog | Диалог для выбора пути к каталогу |
| MultiContentPickerDialog | MultiContentPicker позволяет выбрать несколько документов, изображений, видеофайлов или файлов с музыкой |
| MultiDocumentPickerDialog | Средство выбора нескольких документов |
| MultiDownloadPickerDialog | Средство выбора нескольких загруженных файлов |
| MultiFilePickerDialog | Средство выбора нескольких файлов |
| MultiImagePickerDialog | Средство выбора нескольких изображений |
| MultiMusicPickerDialog | Средство выбора нескольких файлов с музыкой |
| MultiVideoPickerDialog | Средство выбора нескольких видеофайлов |
| RenameDialog | Диалог переименования с многострочным редактором и валидацией |
Рекомендации
При интеграции любых средств выбора (Pickers) в приложение рекомендуется придерживаться следующих лучших практик:
-
Обязательная обработка отмены действия Пользователь может прервать операцию выбора в любой момент, нажав системную кнопку "Назад" или выполнив соответствующий свайп. В этом случае сигналы подтверждения (например,
acceptedилиselectedContentPropertiesChanged) не срабатывают. Логика приложения должна быть готова к тому, что после возврата на страницу состояние не изменится. Не следует полагаться на то, что пикер всегда вернет результат; необходимо предусматривать сценарий отмены. -
Использование
urlвместоfilePathв QML При передаче путей к выбранным файлам в QML-компоненты (такие какImage,MediaPlayer,WebView) настоятельно рекомендуется использовать полеurlиз свойств пикера, а неfilePath. Формат URI (file:///...) корректно обрабатывает специальные символы, пробелы и национальные алфавиты в именах файлов, что предотвращает ошибки парсинга путей. СвойствоfilePath(сырой строковый путь) следует использовать при передаче данных в C++-часть приложения или при работе с классамиQFileиQDir. -
Проверка актуальности файла Между моментом выбора файла в пикере и моментом его фактического использования в приложением может пройти время. Пользователь может удалить, переместить или переименовать файл. Перед открытием документа через
QFile::open()следует проверять его возвращаемый статус.