当前位置: 首页 > article >正文

qt QFileSystemModel详解

1、概述

QFileSystemModel是Qt框架中的一个关键类,它继承自QAbstractItemModel,专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图组件(如QTreeView、QListView等)展示给用户。QFileSystemModel与操作系统文件系统交互,将文件和目录的层次结构转换为数据模型,从而实现了文件系统的可视化。

2、重要方法

QFileSystemModel提供了一系列重要的方法,用于管理和展示文件系统数据。以下是一些常用的方法:

  • setRootPath(const QString& path):设置文件系统的根路径。
  • rowCount(const QModelIndex& parent = QModelIndex()) const:返回指定父索引下的子项行数。
  • columnCount(const QModelIndex& parent = QModelIndex()) const:返回指定父索引下的列数(对于QFileSystemModel,通常只有一列)。
  • data(const QModelIndex& index, int role = Qt::DisplayRole) const:返回指定索引处的数据,role参数指定了数据的类型(如文件名、文件大小等)。
  • index(int row, int column, const QModelIndex& parent = QModelIndex()) const:返回指定行和列处的索引。
  • fileName(const QModelIndex& index) const:返回指定索引处的文件名。
  • filePath(const QModelIndex& index) const:返回指定索引处的文件路径。
  • isDir(const QModelIndex& index) const:判断指定索引处是否为目录。
  • size(const QModelIndex& index) const:返回指定索引处文件的大小(以字节为单位)。
  • type(const QModelIndex& index) const:返回指定索引处文件的类型(如“文件”、“目录”等)。
  • setNameFilters(const QStringList& filters):设置文件类型过滤器,只显示符合过滤条件的文件。
3、重要信号

QFileSystemModel还发出了一些重要的信号,用于通知视图或其他组件文件系统的变化。以下是一些常用的信号:

  • directoryLoaded(const QString& path):当指定目录加载完成时发出。
  • fileRenamed(const QString &path, const QString &oldName, const QString &newName):当文件重命名时发出信号。
  • rootPathChanged(const Qstring &newPath):当根路径改变时发出信号。
  • rowsInserted(const QModelIndex &parent, int first, int last):当行被插入时发出信号。
  • rowsRemoved(const QModelIndex &parent, int first, int last):当行被移除时发出信号。
     
4、文件过滤器
  • QDir::Filters 枚举定义了文件过滤器选项:
  • QDir::Dirs:显示目录。
  • QDir::Files:显示文件。
  • QDir::NoSymLinks:不显示符号链接。
  • QDir::Drives:显示驱动器。
  • QDir::NoDotAndDotDot:不显示·和.
  • QDir::AllDirs:显示所有目录。
  • QDir::Readable:显示可读的文件。
  • QDir::Writable:显示可写的文件。
  • QDir::Executable:显示可执行的文件。

5、文件排序
  • QDir::SortFlags 枚举定义了文件排序方式
  • QDir::Name:按名称排序。
  • QDir::Time:按时间排序。
  • QDir::Size:按大小排序。
  • QDir::Type:按类型排序。
  • QDir::Unsorted:不排序。
  • QDir::DirsFirst:目录排在前面。
  • QDir::DirsLast:目录排在后面。
  • QDir::IgnoreCase:忽略大小写。
  • QDir::LocaleAware:根据区域设置排序。
#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>
#include <QDir>
#include <QDebug>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    // 创建一个QFileSystemModel对象
    QFileSystemModel model;

    // 设置文件系统的根路径为当前工作目录
    QString rootPath = QDir::currentPath();
    model.setRootPath(rootPath);

    // 创建一个QTreeView对象,并将QFileSystemModel设置为其模型
    QTreeView treeView;
    treeView.setModel(&model);

    // 设置QTreeView的根索引为模型的根目录索引
    QModelIndex rootIndex = model.index(rootPath);
    treeView.setRootIndex(rootIndex);

    // 打印根路径下的子文件和子文件夹名
    int rowCount = model.rowCount(rootIndex);
    for (int i = 0; i < rowCount; ++i) {
        QModelIndex childIndex = model.index(i, 0, rootIndex);
        QString childName = model.fileName(childIndex);
        qDebug() << "Child Name:" << childName;
    }

    treeView.setWindowTitle("File System Viewer");
    treeView.show();

    return a.exec();
}

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/384748.html

相关文章:

  • 蓝桥杯 python day01 第一题
  • .NET6中WPF项目添加System.Windows.Forms引用
  • mac crontab 不能使用问题简记
  • Swift 开发教程系列 - 第9章:错误处理
  • 代码随想录刷题学习日记
  • 说说webpack中常见的Plugin?解决了什么问题?
  • 使用Docker-Compose安装redis,rabbitmq,nacos,mysql,nginx,tomcat,portainer组件教程
  • 阿里云多端低代码开发平台魔笔使用测评
  • 信创背景下的GIS技术创新突破方向
  • 05LangChain实战课 - 提示工程与FewShotPromptTemplate的应用
  • 大厂面试真题-如果使用guava limiter实现实例级别的缓存
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧
  • 【深度学习滑坡制图|论文解读2】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
  • 每天一个git命令
  • windows XP,ReactOS系统3.4 共享映射区(Section)---1
  • comfyUI官方笔记整理
  • 第一个纯血鸿蒙应用(Napi开发-ArtTS调用C/C++)
  • 【HarmonyOS】PixelMap转化为Uri
  • 2024.11.4 STM32点灯和简单的数据收发
  • adb shell常用命令
  • LocalDate日期加减一天,mysql日期加减一天
  • K8s使用nfs
  • playground.tensorflow神经网络可视化工具
  • Python 5个数据容器
  • nodeJS程序如何引入依赖包
  • Fortran安装(vscode+gcc+Python)