C++ Qt开发:QFileSystemModel文件管理组件

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QFileSystemModel组件实现文件管理器功能。

QFileSystemModel是Qt框架中的一个关键类,用于在Qt应用程序中管理和展示文件系统的结构。该模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图组件(如QTreeViewQListViewQTabView等)展示给用户。

以下是 QFileSystemModel 类的一些重要函数:

函数描述
QFileSystemModel(QObject *parent = nullptr)构造函数,创建一个 QFileSystemModel 对象。
void setRootPath(const QString &path)设置模型的根路径,指定从哪个目录开始显示文件系统。
QString rootPath() const获取模型的根路径。
void setFilter(QDir::Filters filters)设置目录过滤器,用于过滤显示的文件和目录。
void setResolveSymlinks(bool enable)设置是否解析符号链接。
void sort(int column, Qt::SortOrder order)对指定列进行排序。
QModelIndex index(const QString &path, int column = 0) const根据文件路径和列号获取模型索引。
QFileInfo fileInfo(const QModelIndex &index) const获取给定索引处的文件信息。
bool mkdir(const QModelIndex &index, const QString &name)在给定索引处的目录中创建新目录。
bool rmdir(const QModelIndex &index)删除给定索引处的目录。
bool remove(const QModelIndex &index)删除给定索引处的文件。
void directoryLoaded(const QString &path)在目录加载完成时发射的信号。
void fileRenamed(const QString &path, const QString &oldName, const QString &newName)在文件重命名时发射的信号。
QModelIndex setRootPath(const QString &path)设置根路径,并返回表示新路径的模型索引。
QString filePath(const QModelIndex &index) const获取给定索引处的文件路径。
void setReadOnly(bool enable)设置模型为只读模式。
bool isReadOnly() const判断模型是否为只读模式。
void setNameFilters(const QStringList &filters)设置名称过滤器,用于限制模型中显示的文件类型。
QStringList nameFilters() const获取当前的名称过滤器。
void setRootIndex(const QModelIndex &index)设置根索引。
QModelIndex rootIndex() const获取当前的根索引。
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const获取模型索引。
QModelIndex parent(const QModelIndex &index) const获取给定索引的父索引。
int rowCount(const QModelIndex &parent = QModelIndex()) const获取给定父索引下的行数。
int columnCount(const QModelIndex &parent = QModelIndex()) const获取给定父索引下的列数。
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const获取模型数据。

当需要使用此模型时,我们需要导入QFileSystemModel组件, 并在主类内定义QFileSystemModel类型的模型指针,并在主函数内通过new QFileSystemModel新建类,通过model->setRootPath设置默认停留的指针位置,最后调用model->setNameFilters设置过滤器,此处我们只需要显示*.exe,*.txt,*.mp4三种格式即可,最后使用ui->treeView->setModel将此模型设置到组件内即可,其完整代码非常简单,如下所示;

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 新建类指针model=new QFileSystemModel(this);// 设置根目录model->setRootPath(QDir::currentPath());// 设置过滤器,只过滤出txt,mp4QStringList filter;filter << "*.txt" << "*.mp4";// 使用过滤器model->setNameFilters(filter);model->setNameFilterDisables(false);// 设置数据模型ui->treeView->setModel(model);
}

数据模型内的选中项可通过使用模型内提供的各种方法来实现取值,例如使用model->isDir可获取到是否为目录,通过model->filePath则可用于得到文件的路径等。

// 被点击后触发
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{// 是否是目录ui->chkIsDir->setChecked(model->isDir(index));// 文件路径ui->LabPath->setText(model->filePath(index));// 文件类型ui->LabType->setText(model->type(index));// 文件名ui->LabFileName->setText(model->fileName(index));// 文件的大小int sz=model->size(index)/1024;if (sz<1024){ui->LabFileSize->setText(QString("%1 KB").arg(sz));}else{ui->LabFileSize->setText(QString::asprintf("%.1f MB",sz/1024.0));}
}

运行后则可以通过点击不同的目录树展开,由于设置了只过滤特定的文件所以此处显示的结果如下所示;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开关电源安规测试标准与测试要求

安规测试是对开关电源进行电气性能、安全性能等检测&#xff0c;确保开关电源符合规定并且安全可靠&#xff0c;为开关电源的质量把关。那么开关电源安规测试有哪些测试要求和标准呢&#xff1f; 开关电源安规测试要求 一、测试前 1. 首先&#xff0c;要检查测试环境&#xff0…

游泳——所须知的那些事

游泳是一项大家喜爱的健身活动&#xff0c;带夏季的时候游泳场所成了大家常去的休闲活动场地&#xff0c;但也会存在一定的安全风险&#xff0c;为了保证游泳的安全&#xff0c;需要知道一些事情&#xff1a; 1.清楚的知道游泳池的深度 大部分游泳场馆的泳池是有深浅区的&…

第四篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas生物信息学领域应用

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas生物学数据操作应用介绍二、数据加载与清洗示例代码三、数据分析与统计示例代码四、数据可视化示例代码五、基因组数据分析示例代码六、蛋白质数据分析示例代码七、生物医学图像…

STM32/GD32——电源管理单元PWU

芯片选型 Ciga Device — GD32F470系列 PWU介绍 PMU全称Power Management Unit&#xff0c;电源管理单元。 电源域 总共有三大电源域&#xff0c;包括VDD / VDDA域&#xff0c;1.2V域和备份域。 VDD/VDDA 域 提供PMU 常规电源供应以下模块的供电&#xff1a; 看门狗主频晶…

Spring笔记——Bean的生命周期

Spring其实就是一个管理Bean对象的工厂&#xff0c;它负责对象的创建&#xff0c;对象的销毁等。生命周期的本质是&#xff1a;在哪个时间节点上调用了哪个类的哪个方法。我们可能需要在某个特殊的时间点上执行一段特定的代码&#xff0c;因此要了解在这个生命线上有哪些特殊时…

YoloV8改进策略:Block改进|自研Block,涨点超猛|代码详解|附结构图

涨点效果 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.757,涨点明显! 参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def …

AI数字虚拟人来了你会失业吗?

AI数字虚拟人是一种由人工智能技术驱动的虚拟实体&#xff0c;以及通过语音和图像等界面与人进行交互。它可以模拟人的外貌、声音和行为&#xff0c;并能回答问题、提供信息和执行特定任务。AI数字虚拟人已经开始在各个领域得到广泛应用&#xff0c;例如客户服务、教育、医疗保…

Java二级--操作题详解(1)

目录 1.第一套&#xff1a; 1.1 基本操作&#xff1a; 1.2 题解分析&#xff1a; 2.1 简单应用&#xff1a; 2.2 解题分析&#xff1a; 3.1 综合应用&#xff1a; 3.2解题分析&#xff1a; 1.第一套&#xff1a; 1.1 基本操作&#xff1a; 在考生文件夹中存有文件名为J…

Facebook商城号防封养号技巧,速看

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…

【李沐精读系列】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…

JavaScript高级Ⅰ(自认为很全面版)

目录 第1章 BOM编程 1.1 BOM编程概述 1.1.1 BOM编程的概念 1.1.2 BOM编程的作用 1.1.3 BOM常用的对象 1.2 window对象 1.2.1 JS三个弹框(了解) 代码演示&#xff1a; 运行效果&#xff1a; 1.2.2 JS两个定时器 代码演示&#xff1a; 运行效果&#xff1a; 1.2.3 案…

机器学习——向量化

通常各种编程语言里&#xff0c;都有对应的各种线性代数库&#xff0c;我们可以利用现成的代数库来快速的求解我们想要的结果&#xff0c;也就是说&#xff0c;通过代数库&#xff0c;会让我们可以用更少的代码&#xff0c;更高的效率实现需求&#xff0c;这就是向量化的作用 …

(黑马出品_05)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_05&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术分布式搜索 今日目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技…

go语言基础 -- 文件操作

基础的文件操作方法 go里面的文件操作封装在os包里面的File结构体中&#xff0c;要用的时候最好去查下官方文档&#xff0c;这里介绍下基本的文件操作。 打开关闭文件 import("os" ) func main() {// Open返回*File指针&#xff0c;后续的操作都通过*File对象操作…

白酒:蒸馏技术的优化与新型蒸馏设备的研发

蒸馏技术是豪迈白酒生产中的重要环节&#xff0c;直接关系到产品的质量和风格。云仓酒庄在蒸馏技术的优化和新型蒸馏设备的研发方面进行了大量探索和实践&#xff0c;旨在提升白酒的品质和口感。 首先&#xff0c;蒸馏技术的优化对于豪迈白酒的品质至关重要。传统的蒸馏技术通常…

Python实现时间序列分析Theta模型(ThetaModel算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中的Theta模型(Theta Model)是由Athanasios Theodoridis在2008年提出的一种统计预测方法&…

DNDC模型下载与安装、建模方法、结果分析、率定验证

目录 专题一 DNDC模型介绍 专题二 DNDC初步操作 专题三 遥感和GIS基础 专题四 DNDC气象数据 专题五 DNDC土地数据 专题六 DNDC土壤数据 专题七 DNDC结果分析 专题八 DNDC率定验证 专题九 土壤碳储量与作物产量 专题十 温室气体排放分析 专题十一 农田减排潜力分析 …

义乌等保测评公司有哪些?用哪款堡垒机好?

对于义乌&#xff0c;相信大家都听过&#xff0c;也都知道&#xff0c;耳熟能详。这不有义乌小伙伴在问&#xff0c;义乌等保测评公司有哪些&#xff1f;用哪款堡垒机好&#xff1f;今天我们就来简单聊聊。 义乌等保测评公司有哪些&#xff1f; 目前浙江义乌本地暂未有正规等保…

守护国货,爱创助力花西子全面升级打假体系

图源自花西子官方微博 2021年、2022年、2023年上半年中国彩妆类目销售额均排名第一&#xff08;天猫、抖音&#xff09;&#xff0c;这就是中国品牌花西子。 “水光潋滟晴方好&#xff0c;远山渺渺&#xff0c;花间西子笑。”以花为姓&#xff0c;西子为名的花西子&#xff0c…

Threejs用切线实现模型沿着轨道行驶

这次讲一个经常遇到的使用场景&#xff0c;让模型沿着轨迹运动&#xff0c;这个场景需要解决两个问题&#xff0c;第一是让模型沿着轨迹运动&#xff0c;第二是在沿着轨迹运动的同时&#xff0c;要保持模型的头部也时刻保持前方&#xff0c;而不是单纯的只是更新模型位置。 还是…