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. 本文件的文档贡献者是各自的版权所有者。本文件提供的文档是根据自由软件基金会发布的