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

时间:2014-06-02 15:21:00

标签: c++ qt qtcore qdir qfileinfo

我正在尝试从我想写的文件中获取相对路径。这是一种情况:

我在D:\confs\conf.txt中保存了一个conf文件。我在我的程序中有一些从D:\images\image.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只能处理dir集中的文件(这里是D:\confs),但我想知道是否有办法指示从另一个目录搜索并获取他的相对路径。

2 个答案:

答案 0 :(得分:16)

您正在寻找以下方法:

  

QString QDir::relativeFilePath(const QString & fileName) 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
//           ^                   ^

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

请注意缺少的引号。

答案 1 :(得分:4)

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