模型视图(07):【类】QFileSystemModel[官翻]

QFileSystemModel 类

QFileSystemModel类为本地文件系统提供了一个数据模型。

Header:#include < QFileSystemModel >
qmake:QT += widgets
Inherits:QAbstractItemModel
Inherited By:

详述

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

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提供了一个方便的函数,它为模型中目录的路径返回合适的模型索引。

缓存和性能

在调用setRootPath()之前,QFileSystemModel不会获取任何文件或目录。这将防止在此之前对文件系统进行任何不必要的查询,比如列出Windows上的驱动器。

与QDirModel不同,QFileSystemModel使用一个单独的线程来填充自己,因此它不会导致主线线程在查询文件系统时挂起。在模型填充目录之前,对rowCount()的调用将返回0。

QFileSystemModel保存一个带有文件信息的缓存。缓存使用QFileSystemWatcher自动保持最新。

请参见模型类。

公共类型

enum Option

flags Options

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

See also resolveSymlinks.

enum Roles

ConstantValue
FileIconRoleQt::DecorationRole
FilePathRoleQt::UserRole + 1
FileNameRoleQt::UserRole + 2
FilePermissionsQt::UserRole + 3

属性

  1. nameFilterDisables: bool 隐藏或禁用未通过名称过滤器的文件
  2. options: Options 影响模型的各种选项
  3. readOnly: bool 是否允许写入文件系统
  4. resolveSymlinks: bool 是否应该解析符号链接 只与Windows系统相关

公共函数

  1. QFileSystemModel(QObject *parent = nullptr)
  2. virtual ~QFileSystemModel()

文件、图标

  1. QIcon fileIcon(const QModelIndex &index) const
  2. QFileIconProvider * iconProvider() const
  3. void setIconProvider(QFileIconProvider *provider)
  4. QFileInfo fileInfo(const QModelIndex &index) const
  5. QString fileName(const QModelIndex &index) const
  6. QString filePath(const QModelIndex &index) const

过滤器

  1. QDir::Filters filter() const
  2. void setFilter(QDir::Filters filters)
  3. bool nameFilterDisables() const
  4. void setNameFilterDisables(bool enable)
  5. QStringList nameFilters() const
  6. void setNameFilters(const QStringList &filters)

属性

  1. QModelIndex index(const QString &path, int column = 0) const
  2. bool isDir(const QModelIndex &index) const
  3. bool isReadOnly() const
  4. void setReadOnly(bool enable)
  5. QDateTime lastModified(const QModelIndex &index) const
  6. QModelIndex mkdir(const QModelIndex &parent, const QString &name)
  7. QVariant myComputer(int role = Qt::DisplayRole) const
  8. QFile::Permissions permissions(const QModelIndex &index) const
  9. QDir rootDirectory() const
  10. QString rootPath() const
  11. QModelIndex setRootPath(const QString &newPath)
  12. qint64 size(const QModelIndex &index) const
  13. QString type(const QModelIndex &index) const

选项

  1. QFileSystemModel::Options options() const
  2. bool testOption(QFileSystemModel::Option option) const
  3. void setOption(QFileSystemModel::Option option, bool on = true)
  4. void setOptions(QFileSystemModel::Options options)

修改

  1. bool resolveSymlinks() const
  2. void setResolveSymlinks(bool enable)
  3. bool remove(const QModelIndex &index)
  4. bool rmdir(const QModelIndex &index)

重新实现的公共函数

行列数、设置数据

  1. virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override
  2. virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override
  3. virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
  4. virtual bool setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole) override
  5. virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override

基本操作

  1. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
  2. virtual Qt::ItemFlags flags(const QModelIndex &index) const override
  3. virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override

父子关系

  1. virtual QModelIndex parent(const QModelIndex &index) const override
  2. virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override
  3. virtual bool canFetchMore(const QModelIndex &parent) const override
  4. virtual void fetchMore(const QModelIndex &parent) override
  5. virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const override

拖放相关

  1. virtual Qt::DropActions supportedDropActions() const override
  2. virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
  3. virtual QMimeData * mimeData(const QModelIndexList &indexes) const override
  4. virtual QStringList mimeTypes() const override

信号

  1. void directoryLoaded(const QString &path)
  2. void fileRenamed(const QString &path, const QString &oldName, const QString &newName)
  3. void rootPathChanged(const QString &newPath)

重新实现保护函数

  1. virtual bool event(QEvent *event) override
  2. virtual void timerEvent(QTimerEvent *event) override

总结

从截图可以看出,QFileSystemModel能够提取到程序的相关图标,具体实现见相关的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值