Qt QFileSystemModel功能及用法

QFileSystemModel详解和使用 QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。 阅读详情

QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。

QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。

要通过 QFileSystemModel 获得本机的文件系统,需要用 setRootPath() 函数为 QFileSystemModel 设置一个根目录,例如:

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

静态函数 QDir::currentPath() 获取应用程序的当前路径。

用于获取磁盘文件目录的数据模型类还有一个 QDirModel,QDirModel 的功能与 QFileSystemModel 类似,也可以获取目录和文件,但是 QFileSystemModel 采用单独的线程获取目录文件结构,而 QDirModel 不使用单独的线程。使用单独的线程就不会阻碍主线程,所以推荐使用 QFileSystemModel。

使用 QFileSystemModel 作为数据模型,QTreeView、QListView 和 QTableView 为主要组件设计的实例 samp5_1 运行界面如图 1 所示。



图 1 示例运行界面


在 TreeView 中以目录树的形式显示本机的文件系统,单击一个目录时,右边的 ListView 和 Table View 显示该目录下的目录和文件。在 TreeView 上单击一个目录或文件节点时,下方的几个标签里显示当前节点的信息。

QFileSystemModel 的用法

实例 samp5_1 的主窗口是基于 QMainWindow 的,在使用 UI 设计器做可视化设计时删除了工具栏和状态栏。主窗口界面布局米用了两个分割条的设计,ListView 和 TableView 采用上下分割布局,然后和左边的 TreeView 采用水平分割布局,水平分割布局再和下方显示信息的 groupBox 在主窗口工作区水平布局。

在主窗口类中定义了一个 QFileSystemModel 类的成员变量 model。

QFileSystemModel *model;

主窗口构造函数进行初始化,代码如下:


 
  1. MainWindow::MainWindow(QWidget *parent) :
  2. QMainWindow(parent),
  3. ui(new Ui::MainWindow)
  4. {
  5. ui->setupUi(this);
  6. model=new QFileSystemModel(this); //QFileSystemModel提供单独线程,推荐使用
  7. model->setRootPath(QDir::currentPath()); //设置根目录
  8. ui->treeView->setModel(model); //设置数据模型
  9. ui->listView->setModel(model); //设置数据模型
  10. ui->tableView->setModel(model); //设置数据模型
  11. //信号与槽关联,treeView单击时,其目录设置为listView和tableView的根节点
  12. connect(ui->treeView,SIGNAL(clicked(QModelIndex)),
  13. ui->listView,SLOT(setRootIndex(QModelIndex)));
  14. connect(ui->treeView,SIGNAL(clicked(QModelIndex)),
  15. ui->tableView,SLOT(setRootIndex(QModelIndex)));
  16. }

3 个视图组件都使用 setModel() 函数,将 QFileSystemModel 数据模型 model 设置为自己的数据模型。

connect() 函数设置信号与槽的关联,实现的功能是:在单击 treeView 的一个节点时,此节点就设置为 listView 和 tableView 的根节点,因为 treeView 的 clicked(QModellndex) 信号会传递一个 QModelIndex 变量,是当前节点的模型索引,将此模型索引传递给 listView 和 tableView 的槽函数 setRootIndex(QModellndex),listView 和 tableView 就会显不此节点下的目录和文件。在 treeView 上单击一个节点时,下方的一些标签里会显示节点的一些信息,这是为 treeView 的 clicked(const QModellndex &index) 信号编写槽函数实现的,其代码如下:


 
  1. void MainWindow::on_treeView_clicked(const QModelIndex &index)
  2. {
  3. ui->chkIsDir->setChecked(model->isDir(index));
  4. ui->LabPath->setText(model->filePath(index));
  5. ui->LabType->setText(model->type(index));
  6. ui->LabFileName->setText(model->fileName(index));
  7. int sz=model->size(index)/1024;
  8. if (sz<1024)
  9. ui->LabFileSize->setText(QString("%1 KB").arg(sz));
  10. else
  11. ui->LabFileSize->setText(QString::asprintf("%.1f MB",sz/1024.0));
  12. }

函数有一个传递参数 QModelIndex &index,它是单击节点在数据模型中的索引。通过传递来的模型索引 index,这段代码使用了 QFileSystemModel 的一些函数来获得节点的一些参数,包括以下几种:

  • bool isDir(QModelIndex &index):判断节点是不是一个目录。
  • QString filePath(QModelIndex &index):返回节点的目录名或带路径的文件名。
  • QString fileName(QModelIndex &index):返回去除路径的文件夹名称或文件名。
  • QString type(QModelIndex &index):返回描述节点类型的文字,如硬盘符是 "Drive",文件夹是 "FileFolder",文件则用具体的后缀描述,如 "txtFile"、"exe File"、"pdfFile"等。
  • qint64 size(QModelIndex &index):如果节点是文件,返回文件大小的字节数:如果节点是文件夹,返回 0。


而 QFileSystemModel 是如何获取磁盘目录文件结构的,3 个视图组件是如何显示这些数据的,则是其底层实现的问题了。

Qt QTreeView QFileSystemModel功能及用法详解 QFileSystemModel提供了一个可用于访问本机文件系统的数据模型。 QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。 ... 阅读详情

相关推荐

QT M/V架构开发实战:QTreeView介绍

本文主要介绍的是使用代码生成的情况下对控件的介绍,包括拥有的功能及能修改的样式,也会说明在qtdesiner拖拽控件生成和使用代码生成控件的区别(如果有的话,遇到了的会说),此版本不属于最终版本,以后遇到什么新奇的点会继续更新!本文基于QT官方的文档进行的编写,QT版本为qt 5.14.0,编写环境为Windows11。不得不说官方文档真是个好东西,有时候有些不会的上去一看就能有灵感解决了,可惜没有中文版本的。QTreeView是 Qt 框架中用于​​显示和编辑层次化数据​​的核心视图组件。

Telaye的博客 694

QFileSystemModel+QTreeView文件过滤及查找

文章目录一、QFileSystemModel二、使用1.显示和过滤2.查找3.示例总结 一、QFileSystemModel QFileSystemModel类为本地文件系统提供数据模型。 此类提供对本地文件系统的访问,提供重命名和删除文件和目录以及创建新目录的功能。在最简单的情况下,它可以与适当的显示小部件一起使用,作为浏览器或过滤器的一部分。 QFileSystemModel可以使用QabstracteModel提供的标准接口进行访问,但它也提供了一些特定于目录模型的方便功能。fileInfo()、i

weixin_46424582的博客 2430

Qt进阶开发:QFileSystemModel的使用

本文主要介绍模型/视图架构中QFileSystemModel的使用。

TechNomad的博客 1741

【Qt】之 QTreeView和QFileSystemModel

用Qt来显示一个文件目录是很简单的,如下: QFileSystemModel *model = new QFileSystemModel(); model->setRootPath("/"); //model->setFilter(QDir::Dirs|QDir::NoDotAndDotDot); //只显示文件夹 // 设置过滤器 QString

Teng's world 1万+

Qt中使用QDirModel / QFileSystemModel + QTreeView显示Checkbox复选框

需要编写一个QDirModel / QFileSystemModel的子类,重写QDirModel / QFileSystemModel的flags( ),data( ),setData( )方法。定义一个QSet,名为checkedIndexes,用于记录Checked的路径名。flags( )中返回ItemIsUserCheckable。data( )中判断给定的项是否在checkedIndexes中,有的话就返回Qt::Checked,没有就返回Qt::Unchecked。setData( )则把值为

Rex237的专栏 1万+

「Qt视图」终极指南:QTreeView核心解析与高级应用

本文深入解析Qt中的QTreeView控件,重点介绍了其在模型/视图架构中的核心地位。文章比较了QTreeView与QTreeWidget的差异,详细演示了使用QFileSystemModel和QStandardItemModel构建树形视图的方法,并讲解了外观设置、项操作、信号处理等核心功能。进阶部分涵盖自定义模型和委托的实现,最后通过资源管理器实例展示了QTreeView的综合应用。文章强调QTreeView在处理层级数据时的强大性能和灵活性,是开发复杂桌面应用的重要工具。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 657

python简单应用功能_python os模块简单应用示例

本文实例讲述了python os模块简单应用。分享给大家供大家参考,具体如下:举例中的目录形式如下所示:In [36]: pwdOut[36]: '/home/python/Desktop/code'In [37]: lshello.py hello.txt test.py 文件夹01/ 文件夹02/ 文件夹03/1.当前路径及路径下的文件os.getcwd():查看当前所在路径。os.listd...

weixin_39889487的博客 237

Qt QFileSystemModel详解

QFileSystemModel QFileSystemModel提供了一个可用于访问本机文件系统的数据模型。 QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。 要通过 QFileSystemModel 获得本机的文件系统,需要用 se.

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 7439

QFileSystemModel只显示名称,不显示size,type,modified

Qt 提供的 QFileSystemModel可以提供文件目录树预览功能,但是预览的都自带了Name,size,type, modified等信息。我现在只想显示name这一列,不想显示size,type,modified的信息。解决办法写一个子类,继承自QFileSystemModel,然后在需要显示size,type,modified的地方,把这些信息屏蔽掉。我知道Qt的Model显示数据,主要

snail_hunan的专栏 3841

【QT】QFileSystemModel类的应用介绍

本文是QFileSystemModel类的应用介绍,QFileSystemModel提供了一个可用于访问本机文件系统的数据模型。QFileSystemModel和视图组件QTreeView结合使用,可以用目录树的形式显示本机上的文件系统,如同Widnows的资源管理器一样。使用QFileSystemModeI提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。

u011671745的博客 1588

STM32H7 Flash擦除后数据读取异常的缓存问题解析

本文深入分析了STM32H7系列芯片在Flash擦除后数据读取异常的缓存问题,揭示了由于数据缓存(D-Cache)和指令缓存(I-Cache)导致的数据一致性问题。通过详细的解决方案,包括手动维护缓存一致性和操作期间禁用缓存,帮助开发者有效解决这一常见但棘手的嵌入式开发难题。

weixin_29158413的博客 392

Qt QFileSystemModel功能及用法详解

QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。 QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。 要通过 QFileSystemModel 获得本机的文件系统,需要用 setRootPath() 函数为 QFi

君君的博客 6250

手机拍照也能玩高光谱?教你用TensorFlow Lite在Android上实现实时RGB转高光谱

本文介绍了如何利用TensorFlow Lite在Android设备上实现实时RGB到高光谱的图像重构技术。通过深度学习模型优化和移动端部署策略,使智能手机具备专业级光谱分析能力,适用于农业检测、化妆品分析等多个领域。

weixin_29091105的博客 247

初识QT(三十八)——Qt QFileSystemModel功能及用法详解

QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。 QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。 ...

图像学习之旅 3695

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 812

3.ESP32S3 AP 配网开发实战:HTTP 与 WebSocket 协议实现

本文介绍了基于ESP32S3的AP配网实现方案,通过HTTP协议提供配网网页,利用WebSocket实现双向通信。详细解析了HTTP和WebSocket协议特点,阐述了SPIFFS文件系统存储HTML网页的方法,包括分区表配置、CMakeLists设置和代码实现。工程采用模块化设计,包含WiFi管理、Web服务器、IO扩展等组件,支持手机浏览器直接配网。测试验证了从AP热点连接到路由器切换的全流程,并总结了SPIFFS操作、WebSocket通信等核心优化点。该方案无需专用APP,适合物联网设备快速部署场景

u011697185的专栏 960

Qt文档阅读笔记-QCompleter官方解析及实例

QCompleter类提供了模型item的提示功能。 QCompleter可以再Qt的任意控件进行提示,如QLineEdit和QComboBox控件。当用户开始输入一个单词是,QCompleter会进行提示。 下面是QCompleter的基本用法: QStringList wordList; wordList << "alpha" << "omega" << "omicron" << "zeta"; QLineEdit *lineEdit = .

IT1995的博客 2983

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

[Qt基础内容-08] Qt中MVC的M(Model)

Qt 的MVC框架中的M(model)部分简单介绍

qq_44723937的博客 1175

mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总

一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理。本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明。附件内容提供该 MPU6050模块原理图,配套STM32代码,相关数据手册及参考文档。实物连接图:MPU6050 六轴陀螺仪特点:使用芯片:MPU-6050供电电源:3-5v(内部低压差稳压)通信方式:标...

weixin_39911056的博客 4758

基于OpenCV和Dlib的头部姿态估计详细教程

本文详细介绍了基于OpenCV和Dlib的头部姿态估计方法。通过分析2D人脸特征点与3D头部模型的对应关系,利用PnP(Perspective-n-Point)算法求解头部在三维空间中的姿态。文章首先阐述了坐标系统转换原理,包括世界坐标系、相机坐标系和图像坐标系的转换关系,随后深入讲解了PnP问题的数学表述及求解步骤,并提供了使用Dlib检测68个面部特征点的代码示例。最后介绍了3D通用头部模型的构建方法,包括6点和14点模型的选择,为计算机视觉中的头部姿态估计提供了完整的技术实现方案。

FJN110的博客 338

Qt:QFileSystemModel 使用记录

QFileSystemModel类:Qt帮助中的介绍为: The QFileSystemModel class provides a data model for the local filesystem. This class provides access to the local filesystem, providing functions for renaming and removi...

Linux 2153

Win10或Win11电脑找不到以太网网络适配器的解决方法

Win10或Win11电脑找不到以太网网络适配器的解决方法

Robot_PLC_HMI_Automation 655

Qt QFileSystemModel类详解

Qt QFileSystemModel类详解

qq_30150579的博客 1496

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

qt QFileSystemModel详解

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

ckg3824278的博客 1599

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Qt学习笔记 QFileSystemModel 只显示名称

通过修改表头,只显示一列 m_model = new QFileSystemModel(); m_model->setRootPath(QDir::currentPath()); ui->treeView->setModel(m_model); ui->listView->setModel(m_model); ui-...

xjcwzp的专栏 1954

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Qt Model/View(模型/视图)
下一篇: Qt QStringListModel用法详解
枸杞养生
博客等级 码龄11年 14粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值