Qt模型视图框架:QFileSystemModel

一、描述

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

QFileSystemModel 可以使用 QAbstractItemModel 提供的标准接口进行访问,但它也提供了一些特定于目录模型的便利功能。

注意:QFileSystemModel 需要一个 QApplication 的实例。

默认用法

    QFileSystemModel *model = new QFileSystemModel;
    model->setRootPath(QDir::currentPath());

    QTreeView tree;
    tree.setModel(model);
    tree.setRootIndex(model->index(QDir::currentPath()));
    tree.show();

缓存和性能

在调用 setRootPath() 之前,QFileSystemModel 不会获取任何文件或目录。

QFileSystemModel 使用一个单独的线程来查询文件和目录以便于填充模型数据,因此它不会在查询文件系统时导致主线程挂起。

QFileSystemModel 保存包含文件信息的缓存。缓存使用 QFileSystemWatcher 自动保持最新。


二、类型成员

1、enum QFileSystemModel::Option

  • DontWatchForChanges:不要向路径添加文件观察者。当将模型用于行编辑完成等简单任务时,这会减少开销。
  • DontResolveSymlinks:不解析文件系统模型中的符号链接。
  • DontUseCustomDirectoryIcons:始终使用默认目录图标。一些平台允许用户设置不同的图标。自定义图标会对网络或可移动驱动器的性能产生重大影响。

2、enum QFileSystemModel::Roles

  • FileIconRole:Qt::DecorationRole
  • FilePathRole:Qt::UserRole + 1
  • FileNameRole:Qt::UserRole + 2
  • FilePermissions:Qt::UserRole + 3

三、属性成员

1、nameFilterDisables : bool

未通过名称过滤器的文件是隐藏还是禁用,默认为 true。

2、options : Options

此属性包含影响模型的各种选项。默认情况下,禁用所有选项。

3、readOnly : bool

此属性保存目录模型是否允许写入文件系统。默认为 true。

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

4、resolveSymlinks : bool

此属性保存目录模型是否应解析符号链接。默认为 true。 


四、成员函数

4.1、信号

1、[signal] void directoryLoaded(const QString &path)

当查询文件和目录的线程完成加载路径时发出此信号。

2、[signal] void fileRenamed(const QString &path, const QString &oldName, const QString &newName) 

每当具有 oldName 的文件成功重命名为 newName 时,就会发出此信号。 该文件位于目录path中。

3、[signal] void rootPathChanged(const QString &newPath)

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

4.2、函数

1、QIcon fileIcon(const QModelIndex &index)

      QFileInfo fileInfo(const QModelIndex &index)

      QString fileName(const QModelIndex &index)

      QString filePath(const QModelIndex &index) 

返回存储在模型中给定索引下的项目的图标、QFileInfo、文件名、路径。

2、 QAbstractFileIconProvider * iconProvider() / void setIconProvider(QAbstractFileIconProvider *provider)

返回此目录模型的文件图标提供程序。

3、QModelIndex index(const QString &path, int column = 0)

返回给定路径和列的模型项索引。

4、bool isDir(const QModelIndex &index)

如果模型项索引表示目录,则返回 true, 否则返回false。

5、QDateTime lastModified(const QModelIndex &index)

返回上次修改索引的日期和时间。 

6、QModelIndex mkdir(const QModelIndex &parent, const QString &name)

使用父模型索引中的 name 创建一个目录。

7、QVariant myComputer(int role = Qt::DisplayRole)

返回在给定角色下为项目“我的电脑”存储的数据。

8、bool remove(const QModelIndex &index)

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

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

9、bool rmdir(const QModelIndex &index)

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

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

10、QDir rootDirectory()

当前设置的目录。

11、QString rootPath()

当前设置的根路径。

12、void setFilter(QDir::Filters filters)

设置模型的过滤器。请注意,设置的过滤器应始终包含 QDir::AllDirs 枚举值,否则 QFileSystemModel 将无法读取目录结构。

13、void setNameFilters(const QStringList &filters) 

设置名称过滤器以应用于现有文件。

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

如果 on 为true,则设置要启用的给定选项; 否则,清除给定的选项。

15、QModelIndex setRootPath(const QString &newPath)

设置观察的目录为 newPath。 对该目录中文件和目录的任何更改都将反映在模型中。

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

16、qint64 size(const QModelIndex &index)

 返回索引的字节大小。 如果文件不存在,则返回 0。

17、bool testOption(QFileSystemModel::Option option)

如果启用了给定的选项,则返回 true,否则返回 false。

 18、QString type(const QModelIndex &index)

返回文件索引的类型,例如“目录”或“JPEG 文件”("Directory" or "JPEG file")。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值