22

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

我将 conf 文件保存在D:\confs\conf.txt. 我的程序中有一些从D:\images\image.bmp. 在我的conf.txt我想拥有../images/image.bmp

我看到了一些有用的类,例如QDirorQFileInfo但我不知道什么是最好用的。我试过了:

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

我阅读了文档,它说filePath只能使用目录集中的文件(这里D:\confs),但我想知道是否有办法指示从不同的目录搜索并获取他的相对路径。

4

2 回答 2

19

您正在寻找以下方法:

QString QDir::relativeFilePath(const QString & fileName) const

返回文件名相对于目录的路径。

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
//           ^                   ^

总体而言,您所做的可能不是一个好主意,因为它将配置和图像路径耦合在一起。即,如果您移动其中任何一个,应用程序就会停止工作。

另请注意缺少的引号。

于 2014-06-02T20:19:13.513 回答
4
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");
于 2014-06-02T19:18:41.913 回答