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

Qt关于路径的处理

文章目录

  • 一、Qt 路径与 Windows 路径转换
    • 1. Windows 分隔符转换为 Qt 分隔符
    • 2. Qt 分隔符转换为 Windows 分隔符
  • 二、将相对路径转化为绝对路径:QDir::absolutePath()
  • 三、获取应用程序可执行文件所在的目录: QCoreApplication::applicationDirPath()
  • 四、获取应用程序可执行文件的文件路径: QCoreApplication::applicationFilePath()
  • 五、获取应用程序当前工作目录的绝对路径:QString QDir::currentPath()
  • 六、判断目录是否存在:QDir::exists()
  • 七、删除目录:QDir::rmdir()
  • 八、拼接路径
    • 已知目录和文件名,拼接该文件的绝对路径
    • 已知一个文件的路径,拼接同级目录的另一文件名

一、Qt 路径与 Windows 路径转换

Qt 路径的分隔符是 / ,windows 路径分隔符为 \

1. Windows 分隔符转换为 Qt 分隔符

QString QDir::cleanPath(const QString &path)

QString QDir::fromNativeSeparators(const QString &pathName)

示例:

QString strWinDir("D:\\1\\2\\3\\"); // "D:\1\2\3\"
// cleanPath 将最后多余的 / 去掉了
QString strQtDir = QDir::cleanPath(strWinDir); 
// "D:/1/2/3"
// fromNativeSeparators 只是将 \ 转换为 /
QString strQtDir1 = QDir::fromNativeSeparators(strWinDir);
// "D:/1/2/3/"

2. Qt 分隔符转换为 Windows 分隔符

QString QDir::toNativeSeparators(const QString &pathName)

示例:

QString strQtDir = "D:/1/2/3";
QString strQtDir1 = "D:/1/2/3/";
strWinDir = QDir::toNativeSeparators(strQtDir); 
// "D:\1\2\3"
strWinDir1 = QDir::toNativeSeparators(strQtDir1); 
// "D:\1\2\3\"

二、将相对路径转化为绝对路径:QDir::absolutePath()

QDir temDir("../../image.png");
QString filePath = temDir.absolutePath();

“E:/image.png”

三、获取应用程序可执行文件所在的目录: QCoreApplication::applicationDirPath()

QString applicationDirPath;
applicationDirPath = QCoreApplication::applicationDirPath();
qDebug()<<"applicationDirPath"<<applicationDirPath;

“E:/QtProject/build-untitled-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/debug”

四、获取应用程序可执行文件的文件路径: QCoreApplication::applicationFilePath()

QString applicationFilePath;
applicationFilePath = QCoreApplication::applicationFilePath();
qDebug()<<"applicationFilePath"<<applicationFilePath;

“E:/QtProject/build-untitled-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/debug/untitled.exe”

五、获取应用程序当前工作目录的绝对路径:QString QDir::currentPath()

这个类似于“./”操作。

QString currentPath;
QDir dir;
currentPath=dir.currentPath(); 
qDebug()<<"path"<<currentPath;

“E:/QtProject/build-untitled-Desktop_Qt_5_14_2_MinGW_64_bit-Debug”

六、判断目录是否存在:QDir::exists()

bool QDir::exists(const QString &name) const

七、删除目录:QDir::rmdir()

bool QDir::rmdir(const QString &dirName)

传入的参数 dirName 为目录名,如果输入一个多级目录的路径,删除的为最后一级目录,且该目录必须为空,只能是文件夹,不能是文件。
如果目录不存在,返回 false。

bool QDir::rmpath(const QString &dirPath) 

传入的参数为目录的路径,可以删除给定路径的所有父目录,但路径中所有的目录必须为空目录,如 路径为 D:/6/5,则文件夹 6 中只包含文件夹 5,文件夹 5 中无文件,则可以删除该目录。

八、拼接路径

已知目录和文件名,拼接该文件的绝对路径

QDir dir("C:/Test");
QString filePath = dir.absoluteFilePath("temp.dat"); 
// filePath==C:/Test/temp.dat
QString path = QDir::toNativeSeparators(dir.absoluteFilePath("temp.dat"));
// "D:\\Test\\1.txt"

已知一个文件的路径,拼接同级目录的另一文件名

QFileInfo fileInfo("C:/Test/temp.dat");
QDir dir(fileInfo.canonicalPath());
QString filePath = dir.absoluteFilePath("temp_1.dat"); 
// filePath==C:/Test/temp_1.dat

若文件不存在,则canonicalPath()函数返回一个空字符串。


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

相关文章:

  • 从AI生成内容到虚拟现实:娱乐体验的新边界
  • Json转换类型报错问题:java.lang.Integer cannot be cast to java.math.BigDecimal
  • Vue篇-07
  • css盒子水平垂直居中
  • 【Qt】03-页面切换
  • Spring Boot 动态表操作服务实现
  • 请在危险边缘试探、C++primer循环学习
  • linux内存的反向映射
  • 基于gtid的备份_恢复_注意事项_mysqldump_skip-gtids_include-gtids_exclude-gtids
  • ThreadLocal详解
  • 人工智能交互革命:探索ChatGPT的无限可能 第4章 ChatGPT-智能客服
  • Git(一)
  • es-head插件插入查询以及条件查询(五)
  • Spring Cloud Alibaba 多租户saas企业开发架构技术选型和设计方案
  • 程序员面试最反感的这件事,很多公司都会做
  • anaconda如何改变虚拟环境安装路径
  • Java分布式锁面试题
  • 92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
  • 编写猫咪相册应用 HTML
  • 笔记本网卡wireless-AC-9462驱动设备问题,搜索不到无线网络,wifi界面消失
  • mac-m1-docker安装nacos异常
  • 2023年总结的web前端学习路线分享(学习导读)
  • Linux 0.11
  • 高速下载Ubuntu系统【清华大学开源软件镜像站】(ubuntu-22.04.1-desktop-amd64.iso)
  • FCN网络解析
  • MATLAB | R2023a更新了哪些好玩的东西