I am trying to get the relative path from files that I would like to write. Here a situation:
I save a conf file in D:\confs\conf.txt
. I have in my programs some files read from D:\images\image.bmp
. In my conf.txt
I would like to have ../images/image.bmp
.
I see some useful classes like QDir
or QFileInfo
but I don't know what it's the best to use. I tried:
QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp
I read the doc and it says filePath
only work with files in the dir set (here D:\confs
) but I wonder if there is a way to indicate to search from a different dir and get his relative path.
You are looking for the following method:
QString QDir::relativeFilePath(const QString & fileName) const
Returns the path to fileName relative to the directory.
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"
Adapting your code according to the examples above, it will look as follows:
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
// ^ ^
Overall, what you do might be a bad idea since it will couple the config and image paths together. I.e. if you move either of them, the application stops working.
Please also notice the missing quotes.