「QT」文件类 之 QDir 目录类

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合
「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发
「Py」Python程序设计「Math」探秘数学世界「PK」Parasolid函数说明

目录

    • QDir类在Qt 5.15中的详细介绍
      • 一、引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的注意事项
      • 五、类的继承
      • 六、类的构造介绍
      • 七、公有函数介绍
      • 八、Static函数介绍
      • 九、运算符重载
      • 十、详细代码举例

QDir类在Qt 5.15中的详细介绍

一、引言

QDir类是Qt框架中的一个核心类,它提供了对文件系统目录的操作接口。Qt是一个跨平台的应用程序开发框架,广泛用于开发桌面、移动和嵌入式设备上的应用程序。QDir类使得开发者能够方便地在不同操作系统上处理目录和文件,如进行目录遍历、文件查找、创建、删除、移动等操作。

二、使用范围

QDir类用于操作路径名,获取关于目录路径及文件的相关信息。它既可以用于访问文件系统,也可以用于访问Qt的资源系统。QDir可以指向一个用相对路径或绝对路径指明的文件,并支持多种过滤和排序功能,以满足不同的目录和文件操作需求。

三、类的头文件

QDir类的头文件是<QDir>。在使用QDir类之前,需要包含这个头文件。

#include <QDir>

四、类的注意事项

  1. 当调用QDir的相关方法(例如rename(), removeRecursively())时,需要注意:

    • 操作文件时不应当在传入参数后加上“/”。
    • 操作文件夹时要在传入参数后面加入“/”。
  2. QDir的路径分隔符:

    • Qt使用“/”作为通用目录分隔符。
    • 在Windows上,QDir会将路径转换为符合底层操作系统的格式。

五、类的继承

QDir类不继承任何类,也没有子类。但是,它内部使用了私有类QDirPrivate来管理其内部数据和状态。

六、类的构造介绍

QDir类有多个构造函数,可以接收不同的参数来初始化对象。

  • QDir():构造一个指向当前工作目录的QDir对象。
  • QDir(const QString &path):构造一个指向指定路径的QDir对象。
  • QDir(const QDir &other):复制构造函数,构造一个与另一个QDir对象相同的QDir对象。

七、公有函数介绍

QDir类提供了丰富的公有函数,用于操作目录和文件。以下是一些常用的公有函数:

  • bool exists() const:检查目录是否存在。
  • QString path() const:返回目录的路径。
  • void setPath(const QString &path):设置目录的路径。
  • QString absolutePath() const:返回目录的绝对路径。
  • QString dirName() const:返回目录名。
  • bool cd(const QString &dirName):改变当前目录到指定的子目录。
  • bool cdUp():改变当前目录到父目录。
  • bool mkdir(const QString &dirName) const:创建目录。
  • bool rmdir(const QString &dirName) const:删除目录,目录必须为空。
  • QStringList entryList(Filters filters = NoDotAndDotDot | AllDirs | AllFiles, SortFlags sort = NoSort) const:返回目录中的文件和目录列表。
  • QFileInfoList entryInfoList(Filters filters = NoDotAndDotDot | AllDirs | AllFiles, SortFlags sort = NoSort) const:返回目录中的文件和目录的详细信息列表。

八、Static函数介绍

QDir类还提供了一些静态函数,用于获取系统路径或进行路径转换。

  • QDir current():返回指向当前工作目录的QDir对象。
  • QString currentPath():返回当前工作目录的路径。
  • QDir home():返回指向用户主目录的QDir对象。
  • QString homePath():返回用户主目录的路径。
  • QDir root():返回指向根目录的QDir对象。
  • QString rootPath():返回根目录的路径。
  • QDir temp():返回指向系统临时目录的QDir对象。
  • QString tempPath():返回系统临时目录的路径。
  • QString cleanPath(const QString &path):返回目录分隔符标准化的路径。
  • QString fromNativeSeparators(const QString &pathName):将路径中的本机分隔符转换为“/”。

九、运算符重载

QDir类没有重载任何运算符。

十、详细代码举例

以下是一个使用QDir类的示例代码,用于列出指定目录下的所有文件,并按文件大小从小到大排序。

#include <QCoreApplication>
#include <QDir>
#include <QFileInfoList>
#include <QFileInfo>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个 QDir 对象,指向当前工作目录QDir dir;// 打印当前工作目录qDebug() << "Current Directory:" << dir.absolutePath();// 改变当前目录到指定的路径(假设这个路径存在)// dir.setPath("/path/to/your/directory");// 列出目录中的所有条目(文件和子目录)QFileInfoList fileList = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files);// 遍历文件列表for (const QFileInfo &fileInfo : fileList) {// 判断是文件还是目录if (fileInfo.isFile()) {qDebug() << "File:" << fileInfo.absoluteFilePath();} else if (fileInfo.isDir()) {qDebug() << "Directory:" << fileInfo.absoluteFilePath();}// 获取文件的详细信息,如大小、创建时间等qDebug() << "  Size:" << fileInfo.size();qDebug() << "  Created:" << fileInfo.created();qDebug() << "  Last Modified:" << fileInfo.lastModified();}// 创建一个新的子目录QString newDirName = "NewSubDirectory";if (dir.mkpath(newDirName)) {qDebug() << "Directory created:" << dir.absoluteFilePath(newDirName);} else {qDebug() << "Failed to create directory:" << newDirName;}// 重命名目录(假设新目录已经存在)QString oldDirName = newDirName;QString newDirNameRenamed = "RenamedSubDirectory";if (dir.rename(oldDirName, newDirNameRenamed)) {qDebug() << "Directory renamed from" << oldDirName << "to" << newDirNameRenamed;} else {qDebug() << "Failed to rename directory from" << oldDirName;}// 删除目录(及其内容,如果设置为递归删除)if (dir.rmdir(newDirNameRenamed) || dir.removeRecursively(newDirNameRenamed)) {qDebug() << "Directory removed:" << newDirNameRenamed;} else {qDebug() << "Failed to remove directory:" << newDirNameRenamed;}return a.exec();
}

在这个示例中,我们首先创建了一个QDir对象,指向指定的目录。然后,我们设置了过滤器来只列出文件,并设置了排序方式为按文件大小排序。最后,我们通过调用entryInfoList()函数获取了目录中的文件信息列表,并遍历这个列表来打印每个文件的文件名和大小。

通过以上介绍,我们可以看到QDir类在Qt框架中是一个非常强大且灵活的类,它提供了丰富的功能来操作目录和文件。无论是进行简单的目录遍历还是复杂的文件查找和排序,QDir类都能很好地满足我们的需求。


在这里插入图片描述

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

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

相关文章

expo5.2运行web报错Cannot find module ‘react‘

修改app.json中的web output 配置为 ‘single’ 可以解决 expo run web 这个错误问题 "web": {"bundler": "metro","output": "single","favicon": "./assets/images/favicon.png"},相关链接&#xff1…

Xcode 16 pod init失败的解决方案

目录 前言 一、错误重现 二、解决方案 1.右击项目修改文件展示方式 2.修改.xcodeproj文件 3.参考文档 前言 我们使用Xcode创建新项目之后&#xff0c;执行pod init报错。我们看一下如何解决。 一、错误重现 RuntimeError - PBXGroup attempted to initialize an object …

Mysql-DDL语句

文章目录 DDL 语句DDL 操作库创建数据库修改数据库使用数据库 DDL 操作表Mysql 的数据类型创建表修改表结构 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Mysql专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月14日11点30分 DDL 语…

css三角制作(二十课)

代码&#xff1a; <style>/* 边框原理 */.box1 {width: 0;height: 0;border-top: 100px solid pink;border-bottom: 100px solid blue;border-left: 100px solid yellow;border-right: 100px solid greenyellow;}/* 三角制作 */.box2 {width: 0;height: 0;border: 100px …

高效稳定!新加坡服务器托管方案助力企业全球化布局

在全球化的商业环境中&#xff0c;企业对于高效、稳定的服务器托管方案的需求日益迫切。作为亚洲的服务器托管中心&#xff0c;新加坡凭借其独特的地理位置、稳定的政治环境、先进的科技设施以及开放的市场政策&#xff0c;为企业提供了理想的服务器托管解决方案&#xff0c;助…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【Python · PyTorch】卷积神经网络(基础概念)

【Python PyTorch】卷积神经网络 CNN&#xff08;基础概念&#xff09; 0. 生物学相似性1. 概念1.1 定义1.2 优势1.2.1 权重共享1.2.2 局部连接1.2.3 层次结构 1.3 结构1.4 数据预处理1.4.1 标签编码① One-Hot编码 / 独热编码② Word Embedding / 词嵌入 1.4.2 归一化① Min-…

Qt 之 qwt和QCustomplot对比

QWT&#xff08;Qt Widgets for Technical Applications&#xff09;和 QCustomPlot 都是用于在 Qt 应用程序中绘制图形和图表的第三方库。它们各有优缺点&#xff0c;适用于不同的场景。 以下是 QWT 和 QCustomPlot 的对比分析&#xff1a; 1. 功能丰富度 QWT 功能丰富&a…

谷歌DeepMind推出了一种新的方式来“窥探”AI的“内心”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

PowerBI 用RANK,RANKX和TOPN 排名的简单示例

1. 销量表 2. 添加计算总销量的度量值&#xff0c;它将在RANK和RANKX里被使用 总销售量 SUM(销量[销售量]) 3.计算排名的度量值 RANK函数 排名 RANK(ALL(销量[产品]),ORDERBY([总销售量],DESC)) RANKX函数: 排名2 RANKX(ALL(销量),[总销售量],,DESC,Skip) 4.页面上添…

【EmbeddedGUI】脏矩阵设计说明

脏矩阵设计说明 背景介绍 一般情况下&#xff0c;当屏幕内容绘制完毕后&#xff0c;实际应用通常需要更新屏幕中的一部分内容&#xff0c;而不是单纯显示一个静态图片在那。 如下图所示&#xff0c;屏幕中有一个图片控件&#xff08;Img2&#xff09;和一个文本控件&#xf…

「QT」文件类 之 QTextStream 文本流类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因&#xff1a;在MySQL8.0之后的版本&#xff0c;只允许在数据库初始化时指定&#xff0c;之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息&#xff1a;Job for mysqld.service failed because the control process exited …

PVE纵览-安装系统卡“Loading Driver”的快速解决方案

PVE纵览-安装系统卡“Loading Driver”的快速解决方案 文章目录 PVE纵览-安装系统卡“Loading Driver”的快速解决方案摘要通过引导参数解决PVE安装卡在“Loading Driver”问题官方解决方法 关键字&#xff1a; PVE、 显卡、 Loading、 Driver、 nomodeset 摘要 在虚拟机…

[Android]相关属性功能的裁剪

1.将home界面的search bar 移除 /src/com/android/launcher3/graphics/LauncherPreviewRenderer.java // Add first page QSBif (FeatureFlags.QSB_ON_FIRST_SCREEN) {CellLayout firstScreen mWorkspaceScreens.get(FIRST_SCREEN_ID);View qsb mHomeElementInflater.infla…

Git的概念、安装、操作与分支管理和图形化界面TortoiseGit(小乌龟 )的安装与使用

目录 一、Git 概述 简介 安装 使用场景 二、Git 操作详解 使用git管理文件版本 使用 Git 管理代码 三、分支操作 使用小乌龟操作分支 创建新的分支 两个分支合并 四、总结 在当今的软件开发和文档编写等领域&#xff0c;版本控制工具至关重要。Git 作为其中的佼佼者…

边缘计算在智能制造中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在智能制造中的应用 边缘计算在智能制造中的应用 边缘计算在智能制造中的应用 引言 边缘计算概述 定义与原理 发展历程 …

设计模式之装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

前言&#xff1a; 两个本想描述一样的意思的词&#xff0c;只因一字只差就让人觉得一个是好牛&#xff0c;一个好搞笑。往往我们去开发编程写代码时也经常将一些不恰当的用法用于业务需求实现中&#xff0c;但却不能意识到。一方面是由于编码不多缺少较大型项目的实践&#xff…

使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本

作者&#xff1a;来自 Elastic Jonathan Simon 收集数据对于可观察性和安全性至关重要&#xff0c;而确保数据能够快速搜索且获得低延迟结果对于有效管理和保护应用程序和基础设施至关重要。但是&#xff0c;存储所有这些数据会产生持续的存储成本&#xff0c;这为节省成本创造…

Node.js事件循环:解锁异步编程的奥秘

Node.js的事件循环是实现高性能、异步编程的关键机制。了解Node.js事件循环的工作原理和使用方法对于开发高效的应用程序至关重要。本文将深入介绍Node.js事件循环的原理、阶段和最佳实践&#xff0c;帮助您充分利用这一强大功能。 Node.js事件循环概述 Node.js事件循环是Node…