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

你可能感兴趣的:(qt,windows)