QFileSystemModel 类
QFileSystemModel 类提供本地文件系统的数据模型。更多...
| 头文件 | #include <QFileSystemModel> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) | 
| qmake | QT += gui | 
| 继承 | QAbstractItemModel | 
公共类型
| 枚举 | Option { DontWatchForChanges, DontResolveSymlinks, DontUseCustomDirectoryIcons } | 
| flags | 选项 | 
| 枚举 | Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions } | 
属性
- 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 | 
| (since 6.6)QDateTime | lastModified(const QModelIndex &index, const QTimeZone &tz) 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 | 
| QFileDevice::Permissions | 权限(const QModelIndex &index) const | 
| bool | 移除(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 | 
重写公共函数
| virtual bool | canFetchMore(const QModelIndex &parent) const override | 
| virtual int | columnCount(const QModelIndex &parent = QModelIndex()) const override | 
| virtual QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override | 
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override | 
| virtual void | fetchMore(const QModelIndex &parent) override | 
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const override | 
| virtual bool | hasChildren(const QModelIndex &parent = QModelIndex()) const override | 
| virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override | 
| virtual QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const override | 
| virtual QMimeData * | mimeData(const QModelIndexList &indexes) const override | 
| virtual QStringList | mimeTypes() const override | 
| virtual QModelIndex | parent(const QModelIndex &index) const override | 
| virtual QHash<int, QByteArray> | roleNames() const override | 
| virtual int | rowCount(const QModelIndex &parent = QModelIndex()) const override | 
| virtual bool | setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole) override | 
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override | 
| virtual void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override | 
| virtual 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) | 
重实现受保护函数
| virtual bool | event(QEvent *event) override | 
| virtual void | timerEvent(QTimerEvent *event) override | 
详细描述
此类提供对本地文件系统的访问,提供用于重命名和删除文件和目录以及创建新目录的函数。在最简单的情况下,它可以与合适的显示小部件一起用作浏览器或过滤器的一部分。
可以使用由QAbstractItemModel提供的标准接口访问QFileSystemModel,但它还提供了一些针对目录模型的特定便利函数。函数fileInfo(),isDir(),fileName()和filePath()提供了关于与模型中的项相关的底层文件和目录的信息。可以通过使用mkdir(),rmdir()来创建和删除目录。
注意:QFileSystemModel需要一个QApplication实例。
使用示例
用于显示默认目录内容的目录模型通常与父对象一起构建。
QFileSystemModel *model = new QFileSystemModel; model->setRootPath(QDir::currentPath());
可以帮助使用树视图来显示模型的内容。
通过设置树视图的根索引,可以显示特定目录的内容。
tree->setRootIndex(model->index(QDir::currentPath()));
可以使用视图的根索引来控制显示层次模型的多少。QFileSystemModel提供了一个便利函数,该函数返回模型中目录路径的适当模型索引。
缓存和性能
QFileSystemModel将不会检索任何文件或目录,直到调用setRootPath()。这将防止在此点之前有任何不必要的文件系统查询,例如在Windows上列出驱动器。
QFileSystemModel使用一个单独的线程来自我填充,因此它不会使main线程因为正在查询文件系统而挂起。在模型填充目录之前,rowCount()调用将返回0。
QFileSystemModel保留一个包含文件信息的缓存。该缓存使用QFileSystemWatcher自动更新。
另请参阅:模型类。
成员类型文档
枚举 QFileSystemModel::Option
标志 QFileSystemModel::Options
| 常量 | 值 | 描述 | 
|---|---|---|
| QFileSystemModel::DontWatchForChanges | 0x00000001 | 不要向路径添加文件监视器。这在使用模型进行简单任务(如行编辑完成)时的开销减少。 | 
| QFileSystemModel::DontResolveSymlinks | 0x00000002 | 不要在文件系统模型中解析符号链接。默认情况下,符号链接被解析。 | 
| QFileSystemModel::DontUseCustomDirectoryIcons | 0x00000004 | 始终使用默认目录图标。某些平台允许用户设置不同的图标。自定义图标查找会对网络或可移动驱动器造成很大的性能影响。这相应地将QFileIconProvider::DontUseCustomDirectoryIcons选项设置为图标提供程序。 | 
Options 类型是 QFlags
另请参见 resolveSymlinks。
enum 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) | 
options : Options
此属性保留影响模型的各种选项
默认情况下,所有选项都禁用。
应在更改属性之前设置选项。
访问函数
| 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::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 结束,并将其放置在由 row 和 column 以及 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
这是一个重载函数。
返回给定path和column的模型项索引。
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::UTC或QTimeZone::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。
应在更改属性之前设置选项。
另请参阅 options 和 testOption。
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
如果指定的选项被启用,则返回真;否则返回假。
[重写虚保护] void QFileSystemModel::timerEvent(QTimerEvent *event)
重写: QObject::timerEvent(QTimerEvent *event).
QString QFileSystemModel::type(const QModelIndex &index) const
返回文件index的类型,例如“目录”或“JPEG文件”。
© 2024 The Qt Company Ltd. 本文件的文档贡献者是各自的版权所有者。本文件提供的文档是根据自由软件基金会发布的