Qt关于路径的处理

一、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()函数返回一个空字符串。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值