Класс QFileSystemModel
Класс QFileSystemModel предоставляет модель данных для локальной файловой системы. Подробнее...
| Заголовок: | #include <QFileSystemModel> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследует: | QAbstractItemModel |
Общедоступные типы
| перечисление | Option { НеОтслеживатьИзменения, НеРазрешатьСимволическиеСсылки, НеИспользоватьПользовательскиеИконкиДиректорий } |
| флаги | Options |
| перечисление | Roles { ИконкаФайла, ПутьФайла, ИмяФайла, РазрешенияФайла } |
Свойства
- nameFilterDisables : bool
- options : Options
- readOnly : bool
- resolveSymlinks : bool
Открытые функции
| QFileSystemModel(QObject *parent = nullptr) | |
| virtual | ~QFileSystemModel() |
| QIcon | fileIcon(const QModelIndex &index) const |
| QFileInfo | fileInfo(const QModelIndex &index) const |
| QString | fileName(const QModelIndex &index) const |
| QString | filePath(const QModelIndex &index) const |
| QDir::Filters | filter() const |
| QAbstractFileIconProvider * | iconProvider() const |
| QModelIndex | index(const QString &path, int column = 0) const |
| bool | isDir(const QModelIndex &index) const |
| bool | isReadOnly() const |
| QDateTime | lastModified(const QModelIndex &index) const |
| QModelIndex | mkdir(const QModelIndex &parent, const QString &name) |
| QVariant | myComputer(int role = Qt::DisplayRole) const |
| bool | nameFilterDisables() const |
| QStringList | nameFilters() const |
| QFileSystemModel::Options | options() const |
| QFile::Permissions | permissions(const QModelIndex &index) const |
| bool | remove(const QModelIndex &index) |
| bool | resolveSymlinks() const |
| bool | rmdir(const QModelIndex &index) |
| QDir | rootDirectory() const |
| QString | rootPath() const |
| void | setFilter(QDir::Filters filters) |
| void | setIconProvider(QAbstractFileIconProvider *provider) |
| void | setNameFilterDisables(bool enable) |
| void | setNameFilters(const QStringList &filters) |
| void | setOption(QFileSystemModel::Option option, bool on = true) |
| void | setOptions(QFileSystemModel::Options options) |
| void | setReadOnly(bool enable) |
| void | setResolveSymlinks(bool enable) |
| QModelIndex | setRootPath(const QString &newPath) |
| qint64 | size(const QModelIndex &index) const |
| bool | testOption(QFileSystemModel::Option option) const |
| QString | type(const QModelIndex &index) const |
Реализованные открытые функции
| виртуальный bool | canFetchMore(const QModelIndex &parent) const override |
| виртуальный int | columnCount(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override |
| виртуальный bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| виртуальный void | fetchMore(const QModelIndex &parent) override |
| виртуальный Qt::ItemFlags | flags(const QModelIndex &index) const override |
| виртуальный bool | hasChildren(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
| виртуальный QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const override |
| виртуальный QMimeData * | mimeData(const QModelIndexList &indexes) const override |
| виртуальный QStringList | mimeTypes() const override |
| виртуальный QModelIndex | parent(const QModelIndex &index) const override |
| виртуальный QHash<int, QByteArray> | roleNames() const override |
| виртуальный int | rowCount(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный bool | setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole) override |
| виртуальный QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
| виртуальный void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override |
| виртуальный Qt::DropActions | supportedDropActions() const override |
Сигналы
| void | directoryLoaded(const QString &path) |
| void | fileRenamed(const QString &path, const QString &oldName, const QString &newName) |
| void | rootPathChanged(const QString &newPath) |
Переопределенные защищенные функции
| виртуальный bool | event(QEvent *event) override |
| виртуальный void | timerEvent(QTimerEvent *event) override |
Подробное описание
Этот класс предоставляет доступ к локальной файловой системе, обеспечивая функции переименования и удаления файлов и каталогов, а также для создания новых каталогов. В простейшем случае он может использоваться с подходящим виджетом отображения как часть браузера или фильтра.
QFileSystemModel может быть использован с помощью стандартного интерфейса, предоставляемого QAbstractItemModel, но также предоставляет некоторые удобные функции, специфичные для модели каталога. Функции fileInfo(), isDir(), fileName() и filePath() предоставляют информацию об основных файлах и каталогах, связанных с элементами модели. Каталоги могут быть созданы и удалены с помощью mkdir() и rmdir().
Примечание: QFileSystemModel требует экземпляра QApplication.
Пример использования
Модель каталога, отображающая содержимое каталога по умолчанию, обычно создается с родительским объектом:
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath()); Деревовидное представление может использоваться для отображения содержимого модели
QTreeView *tree = new QTreeView(splitter);
tree->setModel(model); и содержимое конкретного каталога может быть отображено, установив корневой индекс деревавидного представления:
tree->setRootIndex(model->index(QDir::currentPath()));
Корневой индекс представления может использоваться для управления тем, какая часть иерархической модели отображается. QFileSystemModel предоставляет удобную функцию, возвращающую подходящий индекс модели для пути к каталогу в модели.
Кэширование и производительность
QFileSystemModel не будет извлекать никакие файлы или каталоги, пока не будет вызван setRootPath(). Это предотвратит любые ненужные запросы к файловой системе до этого момента, такие как перечисление дисков в Windows.
QFileSystemModel использует отдельный поток для заполнения, поэтому не приведет к зависанию основного потока при запросе файловой системы. Вызовы rowCount() вернут 0, пока модель не заполнит каталог.
QFileSystemModel сохраняет кэш с информацией о файлах. Кэш автоматически обновляется с помощью QFileSystemWatcher.
См. также Классы модели.
Документация по типам членов
[since 5.14] перечисление QFileSystemModel::Optionфлаги QFileSystemModel::Options
| Постоянная | Значение | Описание |
|---|---|---|
QFileSystemModel::DontWatchForChanges |
0x00000001 |
Не добавлять наблюдателей за файлами к путям. Это снижает нагрузку при использовании модели для простых задач, таких как завершение редактирования в строке редактирования. |
QFileSystemModel::DontResolveSymlinks |
0x00000002 |
Не разрешать ссылки в модели файловой системы. По умолчанию ссылки разрешаются. |
QFileSystemModel::DontUseCustomDirectoryIcons |
0x00000004 |
Всегда использовать значок каталога по умолчанию. Некоторые платформы позволяют пользователю задать другой значок. Поиск пользовательских значков сильно влияет на производительность при работе с сетевыми или съемными дисками. Это задает соответствующий параметр QFileIconProvider::DontUseCustomDirectoryIcons в поставщике значков. |
Это перечисление было введено или изменено в Qt 5.14.
Тип Options — это typedef для QFlags<Option>. Он хранит логическое ИЛИ комбинацию значений Option.
См. также resolveSymlinks.
перечисление QFileSystemModel::Roles
| Постоянная | Значение |
|---|---|
QFileSystemModel::FileIconRole |
Qt::DecorationRole |
QFileSystemModel::FilePathRole |
Qt::UserRole + 1 |
QFileSystemModel::FileNameRole |
Qt::UserRole + 2 |
QFileSystemModel::FilePermissions |
Qt::UserRole + 3 |
Документация по свойствам
nameFilterDisables : bool
Это свойство указывает, скрываются или отключаются файлы, не прошедшие фильтрацию по имени.
По умолчанию это свойство true.
Функции доступа:
| bool | nameFilterDisables() const |
| void | setNameFilterDisables(bool enable) |
[since 5.14] options : Options
Это свойство хранит различные параметры, влияющие на модель.
По умолчанию все параметры отключены.
Параметры должны быть установлены до изменения свойств.
Это свойство было добавлено в Qt 5.14.
Функции доступа:
| QFileSystemModel::Options | options() const |
| void | setOptions(QFileSystemModel::Options options) |
См. также setOption() и testOption().
readOnly : bool
Это свойство указывает, разрешает ли модель каталога запись в файловую систему.
Если это свойство установлено в false, модель каталога будет разрешать переименование, копирование и удаление файлов и каталогов.
По умолчанию это свойство true.
Функции доступа:
| bool | isReadOnly() const |
| void | setReadOnly(bool enable) |
resolveSymlinks : bool
Это свойство указывает, должна ли модель каталога разрешать символические ссылки.
Это актуально только для Windows.
По умолчанию это свойство true.
Функции доступа:
| bool | resolveSymlinks() const |
| void | setResolveSymlinks(bool enable) |
См. также QFileSystemModel::Options.
Документация по членам-функциям
QFileSystemModel::QFileSystemModel(QObject *parent = nullptr)
Создаёт модель файловой системы с указанным parent.
[signal] void QFileSystemModel::directoryLoaded(const QString &path)
Этот сигнал испускается, когда поток сбора завершил загрузку path.
[signal] void QFileSystemModel::fileRenamed(const QString &path, const QString &oldName, const QString &newName)
Этот сигнал испускается всякий раз, когда файл с oldName успешно переименован в newName. Файл находится в каталоге path.
[signal] void QFileSystemModel::rootPathChanged(const QString &newPath)
Этот сигнал испускается всякий раз, когда корневой путь изменён на newPath.
[virtual] QFileSystemModel::~QFileSystemModel()
Уничтожает эту модель файловой системы.
[override virtual] bool QFileSystemModel::canFetchMore(const QModelIndex &parent) const
Переопределяет: QAbstractItemModel::canFetchMore(const QModelIndex &parent) const.
[override virtual] int QFileSystemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
Переопределяет: QAbstractItemModel::columnCount(const QModelIndex &parent) const.
[override virtual] QVariant QFileSystemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
Переопределяет: QAbstractItemModel::data(const QModelIndex &index, int role) const.
См. также setData().
[override virtual] bool QFileSystemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Переопределяет: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
Обрабатывает данные, предоставленные операцией перетаскивания, которая завершилась указанным действием над строкой в модели, указанной индексом row, column и parent. Возвращает true, если операция выполнена успешно.
См. также supportedDropActions().
[override virtual protected] bool QFileSystemModel::event(QEvent *event)
Переопределяет: QObject::event(QEvent *e).
[override virtual] void QFileSystemModel::fetchMore(const QModelIndex &parent)
Переопределяет: QAbstractItemModel::fetchMore(const QModelIndex &parent).
QIcon QFileSystemModel::fileIcon(const QModelIndex &index) const
Возвращает значок для элемента, хранящегося в модели по указанному index.
QFileInfo QFileSystemModel::fileInfo(const QModelIndex &index) const
Возвращает QFileInfo для элемента, хранящегося в модели по указанному index.
QString QFileSystemModel::fileName(const QModelIndex &index) const
Возвращает имя файла для элемента, хранящегося в модели по указанному index.
QString QFileSystemModel::filePath(const QModelIndex &index) const
Возвращает путь к элементу, хранящемуся в модели по указанному index.
QDir::Filters QFileSystemModel::filter() const
Возвращает заданный фильтр для модели каталога.
Если фильтр не установлен, по умолчанию используется QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs.
См. также setFilter() и QDir::Filters.
[override virtual] Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const
Переопределяет: QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual] bool QFileSystemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
Переопределяет: QAbstractItemModel::hasChildren(const QModelIndex &parent) const.
[override virtual] QVariant QFileSystemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
Переопределяет: QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const.
QAbstractFileIconProvider *QFileSystemModel::iconProvider() const
Возвращает поставщика значков файлов для этой модели каталога.
См. также setIconProvider().
[override virtual] QModelIndex QFileSystemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Реализует: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
QModelIndex QFileSystemModel::index(const QString &path, int column = 0) const
Это перегруженная функция.
Возвращает индекс элемента модели для заданного path и column.
bool QFileSystemModel::isDir(const QModelIndex &index) const
Возвращает true если элемент модели index представляет каталог; в противном случае возвращает false.
QDateTime QFileSystemModel::lastModified(const QModelIndex &index) const
Возвращает дату и время последнего изменения index.
[override virtual] QMimeData *QFileSystemModel::mimeData(const QModelIndexList &indexes) const
Реализует: QAbstractItemModel::mimeData(const QModelIndexList &indexes) const.
Возвращает объект, содержащий сериализованное описание указанных indexes. Формат описания элементов, соответствующих индексам, получен из функции mimeTypes().
Если список индексов пуст, возвращается nullptr вместо сериализованного пустого списка.
[override virtual] QStringList QFileSystemModel::mimeTypes() const
Реализует: QAbstractItemModel::mimeTypes() const.
Возвращает список типов MIME, которые могут быть использованы для описания списка элементов в модели.
QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &name)
Создает каталог с именем name в индексе модели parent.
QVariant QFileSystemModel::myComputer(int role = Qt::DisplayRole) const
Возвращает данные, сохраненные под заданным role для элемента "Мой компьютер".
См. также Qt::ItemDataRole.
QStringList QFileSystemModel::nameFilters() const
Возвращает список фильтров, примененных к именам в модели.
См. также setNameFilters().
[override virtual] QModelIndex QFileSystemModel::parent(const QModelIndex &index) const
Реализует: QAbstractItemModel::parent(const QModelIndex &index) const.
QFile::Permissions QFileSystemModel::permissions(const QModelIndex &index) const
Возвращает полное объединённое по оператору ИЛИ значение QFile::Permission для index.
bool QFileSystemModel::remove(const QModelIndex &index)
Удаляет элемент модели index из модели файловой системы и удаляет соответствующий файл из файловой системы, возвращая true, если операция выполнена успешно. Если элемент не может быть удалён, возвращается false.
Предупреждение: Эта функция удаляет файлы из файловой системы; она не перемещает их в место, где их можно восстановить.
См. также rmdir().
bool QFileSystemModel::rmdir(const QModelIndex &index)
Удаляет каталог, соответствующий элементу модели index, из модели файловой системы и удаляет соответствующий каталог из файловой системы, возвращая true, если операция выполнена успешно. Если каталог не может быть удален, возвращается false.
Предупреждение: Эта функция удаляет каталоги из файловой системы; она не перемещает их в место, где их можно восстановить.
См. также remove().
[override virtual] QHash<int, QByteArray> QFileSystemModel::roleNames() const
Реализует: QAbstractItemModel::roleNames() const.
QDir QFileSystemModel::rootDirectory() const
Текущий заданный каталог
См. также rootPath().
QString QFileSystemModel::rootPath() const
Текущий заданный путь к корню
См. также setRootPath() и rootDirectory().
[override virtual] int QFileSystemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
Реализует: QAbstractItemModel::rowCount(const QModelIndex &parent) const.
[override virtual] bool QFileSystemModel::setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole)
Реализует: QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role).
См. также data().
void QFileSystemModel::setFilter(QDir::Filters filters)
Устанавливает фильтр модели каталога, заданный filters.
Обратите внимание, что устанавливаемый вами фильтр всегда должен включать значение перечисления QDir::AllDirs, в противном случае QFileSystemModel не сможет прочитать структуру каталога.
См. также filter() и QDir::Filters.
void QFileSystemModel::setIconProvider(QAbstractFileIconProvider *provider)
Устанавливает provider значков файлов для модели каталога.
См. также iconProvider().
void QFileSystemModel::setNameFilters(const QStringList &filters)
Устанавливает фильтры имён filters для применения к существующим файлам.
См. также nameFilters().
[since 5.14] void QFileSystemModel::setOption(QFileSystemModel::Option option, bool on = true)
Устанавливает заданный option в состояние включения, если on равно true; в противном случае очищает заданный option.
Опции должны быть установлены перед изменением свойств.
Эта функция была добавлена в Qt 5.14.
См. также options и testOption().
QModelIndex QFileSystemModel::setRootPath(const QString &newPath)
Устанавливает каталог, отслеживаемый моделью, на newPath, установив файловый наблюдатель на него. Любые изменения файлов и каталогов в этом каталоге будут отражены в модели.
Если путь изменён, будет послан сигнал rootPathChanged().
Примечание: Эта функция не изменяет структуру модели или данные, доступные для представлений. Другими словами, «корень» модели не изменяется, чтобы включать только файлы и каталоги в каталоге, указанном в newPath в файловой системе.
См. также rootPath().
[override virtual] QModelIndex QFileSystemModel::sibling(int row, int column, const QModelIndex &idx) const
Реализует: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
qint64 QFileSystemModel::size(const QModelIndex &index) const
Возвращает размер index в байтах. Если файл не существует, возвращается 0.
[override virtual] void QFileSystemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
Переопределяет: QAbstractItemModel::sort(int column, Qt::SortOrder order).
[override virtual] Qt::DropActions QFileSystemModel::supportedDropActions() const
Переопределяет: QAbstractItemModel::supportedDropActions() const.
[since 5.14] bool QFileSystemModel::testOption(QFileSystemModel::Option option) const
Возвращает true , если заданный параметр option включен; в противном случае возвращает false.
Эта функция была добавлена в Qt 5.14.
См. также options и setOption().
[override virtual protected] void QFileSystemModel::timerEvent(QTimerEvent *event)
Переопределяет: QObject::timerEvent(QTimerEvent *event).
QString QFileSystemModel::type(const QModelIndex &index) const
Возвращает тип файла index, например, "Папка" или "Файл JPEG".
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qfilesystemmodel.html