QFileSystemModel 类

QFileSystemModel 类提供本地文件系统的数据模型。更多...

头文件 #include <QFileSystemModel>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承 QAbstractItemModel

公共类型

枚举Option { DontWatchForChanges, DontResolveSymlinks, DontUseCustomDirectoryIcons }
flags选项
枚举Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions }

属性

公共函数

QFileSystemModel(QObject *parent = nullptr)
virtual~QFileSystemModel()
QIconfileIcon(const QModelIndex &index) const
QFileInfofileInfo(const QModelIndex &index) const
QStringfileName(const QModelIndex &index) const
QStringfilePath(const QModelIndex &index) const
QDir::Filtersfilter() const
QAbstractFileIconProvider *iconProvider() const
QModelIndexindex(const QString &path, int column = 0) const
boolisDir(const QModelIndex &index) const
boolisReadOnly() const
QDateTimelastModified(const QModelIndex &index) const
(since 6.6) QDateTimelastModified(const QModelIndex &index, const QTimeZone &tz) const
QModelIndexmkdir(const QModelIndex &parent, const QString &name)
QVariantmyComputer(int role = Qt::DisplayRole) const
boolnameFilterDisables() const
QStringListnameFilters() const
QFileSystemModel::Optionsoptions() const
QFileDevice::Permissions权限(const QModelIndex &index) const
bool移除(const QModelIndex &index)
boolresolveSymlinks() const
boolrmdir(const QModelIndex &index)
QDirrootDirectory() const
QStringrootPath() const
voidsetFilter(QDir::Filters filters)
voidsetIconProvider(QAbstractFileIconProvider *provider)
voidsetNameFilterDisables(bool enable)
voidsetNameFilters(const QStringList &filters)
voidsetOption(QFileSystemModel::Option option, bool on = true)
voidsetOptions(QFileSystemModel::Options options)
voidsetReadOnly(bool enable)
voidsetResolveSymlinks(bool enable)
QModelIndexsetRootPath(const QString &newPath)
qint64size(const QModelIndex &index) const
booltestOption(QFileSystemModel::Option option) const
QStringtype(const QModelIndex &index) const

重写公共函数

virtual boolcanFetchMore(const QModelIndex &parent) const override
virtual intcolumnCount(const QModelIndex &parent = QModelIndex()) const override
virtual QVariantdata(const QModelIndex &index, int role = Qt::DisplayRole) const override
virtual booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual voidfetchMore(const QModelIndex &parent) override
virtual Qt::ItemFlagsflags(const QModelIndex &index) const override
virtual boolhasChildren(const QModelIndex &parent = QModelIndex()) const override
virtual QVariantheaderData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
virtual QModelIndexindex(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual QMimeData *mimeData(const QModelIndexList &indexes) const override
virtual QStringListmimeTypes() const override
virtual QModelIndexparent(const QModelIndex &index) const override
virtual QHash<int, QByteArray>roleNames() const override
virtual introwCount(const QModelIndex &parent = QModelIndex()) const override
virtual boolsetData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole) override
virtual QModelIndexsibling(int row, int column, const QModelIndex &idx) const override
virtual voidsort(int column, Qt::SortOrder order = Qt::AscendingOrder) override
virtual Qt::DropActionssupportedDropActions() const override

信号

voiddirectoryLoaded(const QString &path)
voidfileRenamed(const QString &path, const QString &oldName, const QString &newName)
voidrootPathChanged(const QString &newPath)

重实现受保护函数

virtual boolevent(QEvent *event) override
virtual voidtimerEvent(QTimerEvent *event) override

详细描述

此类提供对本地文件系统的访问,提供用于重命名和删除文件和目录以及创建新目录的函数。在最简单的情况下,它可以与合适的显示小部件一起用作浏览器或过滤器的一部分。

可以使用由QAbstractItemModel提供的标准接口访问QFileSystemModel,但它还提供了一些针对目录模型的特定便利函数。函数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使用一个单独的线程来自我填充,因此它不会使main线程因为正在查询文件系统而挂起。在模型填充目录之前,rowCount()调用将返回0。

QFileSystemModel保留一个包含文件信息的缓存。该缓存使用QFileSystemWatcher自动更新。

另请参阅:模型类

成员类型文档

枚举 QFileSystemModel::Option
标志 QFileSystemModel::Options

常量描述
QFileSystemModel::DontWatchForChanges0x00000001不要向路径添加文件监视器。这在使用模型进行简单任务(如行编辑完成)时的开销减少。
QFileSystemModel::DontResolveSymlinks0x00000002不要在文件系统模型中解析符号链接。默认情况下,符号链接被解析。
QFileSystemModel::DontUseCustomDirectoryIcons0x00000004始终使用默认目录图标。某些平台允许用户设置不同的图标。自定义图标查找会对网络或可移动驱动器造成很大的性能影响。这相应地将QFileIconProvider::DontUseCustomDirectoryIcons选项设置为图标提供程序。

Options 类型是 QFlags

另请参见 resolveSymlinks

enum QFileSystemModel::Roles

常量
QFileSystemModel::FileIconRoleQt::DecorationRole
QFileSystemModel::FilePathRoleQt::UserRole + 1
QFileSystemModel::FileNameRoleQt::UserRole + 2
QFileSystemModel::FilePermissionsQt::UserRole + 3

属性文档

nameFilterDisables : bool

此属性保留未通过名称筛选器的文件是隐藏的还是禁用的

此属性默认为 true

访问函数

boolnameFilterDisables() const
voidsetNameFilterDisables(bool enable)

options : Options

此属性保留影响模型的各种选项

默认情况下,所有选项都禁用。

应在更改属性之前设置选项。

访问函数

QFileSystemModel::Optionsoptions() const
voidsetOptions(QFileSystemModel::Options options)

另请参见 setOption() 和 testOption

readOnly : bool

此属性保留目录模型是否允许对文件系统进行写入

如果此属性设置为 false,则目录模型将允许文件的重新命名、复制和删除。

此属性默认为 true

访问函数

boolisReadOnly() const
voidsetReadOnly(bool enable)

此属性保留目录模型是否应解析符号链接

这仅在 Windows 上相关。

默认情况下,此属性为 true

访问函数

boolresolveSymlinks() const
voidsetResolveSymlinks(bool enable)

另请参见 QFileSystemModel::Options

成员函数文档

[显式] QFileSystemModel::QFileSystemModel(QObject *parent = nullptr)

构造具有给定 父级 的文件系统模型。

[虚拟 noexcept] QFileSystemModel::~QFileSystemModel()

销毁此文件系统模型。

[覆盖虚拟] bool QFileSystemModel::canFetchMore(const QModelIndex &parent) const

重实现了: QAbstractItemModel::canFetchMore(const QModelIndex &parent) const

[覆盖虚拟] int QFileSystemModel::columnCount(const QModelIndex &parent = QModelIndex()) const

重实现了: QAbstractItemModel::columnCount(const QModelIndex &parent) const

[重写虚函数] QVariant QFileSystemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

重写: QAbstractItemModel::data(const QModelIndex &index, int role) const.

另请参阅setData().

[信号] void QFileSystemModel::directoryLoaded(const QString &path)

此信号在采集线程完成 path 加载时发出。

[重写虚函数] 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).

处理由拖放操作提供的 data,操作以给定的 action 结束,并将其放置在由 rowcolumn 以及 parent 指定的模型中的行上。如果操作成功,则返回 true。

另请参阅supportedDropActions().

[重写虚函数受保护] bool QFileSystemModel::event(QEvent *event)

重写: QObject::event(QEvent *e).

[重写虚函数] 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

返回在给定 index 下的模型中存储的项目的 QFileInfo

QString QFileSystemModel::fileName(const QModelIndex &index) const

返回在给定 index 下的模型中存储的项目的文件名。

QString QFileSystemModel::filePath(const QModelIndex &index) const

返回在给定 index 下的模型中存储的项目的路径。

[信号] void QFileSystemModel::fileRenamed(const QString &path, const QString &oldName, const QString &newName)

此信号在文件名从oldName成功重命名为newName时发出。该文件位于目录path中。

QDir::Filters QFileSystemModel::filter() const

返回为目录模型指定的过滤器。

如果没有设置过滤器,默认过滤器为 QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs

另请参阅setFilter() 以及 QDir::Filters

[虚函数重载] Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const

重实现了: QAbstractItemModel::flags(const QModelIndex &index) const.

[虚函数重载] bool QFileSystemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

重实现了: QAbstractItemModel::hasChildren(const QModelIndex &parent) const.

[虚函数重载] 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

[虚函数重载] 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

这是一个重载函数。

返回给定pathcolumn的模型项索引。

bool QFileSystemModel::isDir(const QModelIndex &index) const

如果模型项index表示目录,则返回true;否则返回false

QDateTime QFileSystemModel::lastModified(const QModelIndex &index) const

返回index最后修改的日期和时间(本地时间)。

这是一个重载函数,相当于调用

lastModified(index, QTimeZone::LocalTime);

如果index无效,则返回默认构造的QDateTime

[自 6.6 版起] QDateTime QFileSystemModel::lastModified(const QModelIndex &index, const QTimeZone &tz) const

返回index最后修改的日期和时间,时间区域为tz

tz的典型参数是QTimeZone::UTCQTimeZone::LocalTime。UTC不需要从本地文件系统API返回的时间进行任何转换,因此获取UTC的时间可能更快。通常选择LocalTime以将时间显示给用户。

如果index无效,则返回默认构造的QDateTime

此函数是在Qt 6.6中引入的。

[重载虚拟] QMimeData *QFileSystemModel::mimeData(const QModelIndexList &indexes) const

重新实现:QAbstractItemModel::mimeData(const QModelIndexList &indexes) const.

返回一个对象,其中包含指定的indexes的序列化描述。用于描述与indexes相关项的格式由mimeTypes()函数获得。

如果indexes的列表为空,则返回nullptr而不是序列化的空列表。

[重载虚拟] QStringList QFileSystemModel::mimeTypes() const

重新实现:QAbstractItemModel::mimeTypes() const.

返回可以用于描述模型中项目列表的MIME类型列表。

QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &name)

在父模型索引parent中创建名为name的目录。

QVariant QFileSystemModel::myComputer(int role = Qt::DisplayRole) const

返回为项目"My Computer"存储的给定role的数据。

另请参阅:Qt::ItemDataRole

QStringList QFileSystemModel::nameFilters() const

返回应用于模型中名称的过滤器的列表。

另请参阅:setNameFilters

[重载虚拟] QModelIndex QFileSystemModel::parent(const QModelIndex &index) const

重新实现: QAbstractItemModel::parent(const QModelIndex &index) const.

QFileDevice::Permissions QFileSystemModel::permissions(const QModelIndex &index) const

返回与index相对应的QFile::Permission的完整或组合。

bool QFileSystemModel::remove(const QModelIndex &index)

从文件系统模型中删除模型项index,并从文件系统中删除相应的文件,如果成功返回true。如果项无法删除,则返回false。

注意:此函数从文件系统中删除文件;它不会将它们移动到可以恢复的位置。

另请参阅:rmdir()。

bool QFileSystemModel::rmdir(const QModelIndex &index)

从文件系统模型中删除与模型项index相对应的目录,并从文件系统中删除相应的目录,如果成功返回true。如果目录无法删除,则返回false。

注意:此函数从文件系统中删除目录;它不会将它们移动到可以恢复的位置。

另请参阅:remove()。

[重写虚拟] QHash<int, QByteArray> QFileSystemModel::roleNames() const

重新实现: QAbstractItemModel::roleNames() const.

QDir QFileSystemModel::rootDirectory() const

当前设置的目录

另请参阅:rootPath()。

QString QFileSystemModel::rootPath() const

当前设置的根路径

另请参阅:setRootPath() 和 rootDirectory()。

[信号] void QFileSystemModel::rootPathChanged(const QString &newPath)

每当根路径更改为newPath时,都会发出此信号。

[重写虚拟] int QFileSystemModel::rowCount(const QModelIndex &parent = QModelIndex()) const

重新实现: QAbstractItemModel::rowCount(const QModelIndex &parent) const.

[重写虚拟] 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

void QFileSystemModel::setOption(QFileSystemModel::Option option, bool on = true)

如果 on 为 true,则设置给定的 option 为启用状态;否则,清除指定的 option

应在更改属性之前设置选项。

另请参阅 optionstestOption

QModelIndex QFileSystemModel::setRootPath(const QString &newPath)

通过在该路径上安装一个 文件系统监视器 来设置模型正在监视的目录为 newPath。此目录内的文件和目录的任何更改都会反映在模型中。

如果路径已更改,则将发出 rootPathChanged() 信号。

注意:此函数不会更改模型的结构或修改视图可获得的数据。换句话说,模型的“根”不会改为仅包括文件系统中的 newPath 指定的目录内的文件和目录。

另请参阅:rootPath()。

[覆盖虚拟] 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。

[覆盖虚拟] void QFileSystemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

重新实现: QAbstractItemModel::sort(int column, Qt::SortOrder order)。

[重写虚函数] Qt::DropActions QFileSystemModel::supportedDropActions() const

重写: QAbstractItemModel::supportedDropActions() const.

bool QFileSystemModel::testOption(QFileSystemModel::Option option) const

如果指定的选项被启用,则返回真;否则返回假。

另请参阅 optionssetOption().

[重写虚保护] void QFileSystemModel::timerEvent(QTimerEvent *event)

重写: QObject::timerEvent(QTimerEvent *event).

QString QFileSystemModel::type(const QModelIndex &index) const

返回文件index的类型,例如“目录”或“JPEG文件”。

© 2024 The Qt Company Ltd. 本文件的文档贡献者是各自的版权所有者。本文件提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3条款授权的。Qt及其各自标志是The Qt Company Ltd在芬兰以及其他国家和地区的商标。其他所有商标均为各自所有者的财产。