在Qt中获取文件的相对路径

Get relative path from a file in Qt

本文关键字:相对 路径 文件 获取 Qt      更新时间:2023-10-16

我正试图从我想写的文件中获得相对路径。这里有一个情况:

我在D:confsconf.txt中保存了一个conf文件。我的程序中有一些从D:imagesimage.bmp读取的文件。在我的conf.txt中,我想有../images/image.bmp

我看到一些有用的类,如QDirQFileInfo,但我不知道它是最好的使用。我试着:

QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp

我读了文档,它说filePath只与目录集(这里是D:confs)中的文件一起工作,但我想知道是否有一种方法可以指示从不同的目录搜索并获得他的相对路径。

您正在寻找以下方法:

QString::relativeFilePath(const QString &文件名)const

返回fileName相对于目录的路径。

QDir dir("/home/bob");
QString s;
s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"

根据上面的例子调整你的代码,它看起来如下:

QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
//           ^                   ^

总的来说,你所做的可能是一个坏主意,因为它将配置和映像路径耦合在一起。也就是说,如果你移动它们中的任何一个,应用程序就会停止工作。

还请注意缺少引号

QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");