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