Я пытаюсь получить относительный путь из файлов, которые я хотел бы написать. Вот ситуация:
Я сохраняю файл conf в D:\confs\conf.txt
, В моих программах есть файлы, прочитанные с D:\images\image.bmp
, В моем conf.txt
Я бы хотел ../images/image.bmp
,
Я вижу некоторые полезные классы, такие как QDir
или же QFileInfo
но я не знаю, что лучше использовать. Я старался:
QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp
Я прочитал документ, и он говорит filePath
работать только с файлами в каталоге dir (здесь D:\confs
) но мне интересно, есть ли способ указать, чтобы искать из другого каталога и получить его относительный путь.
Вы ищете следующий метод:
QString QDir ::lativeFilePath (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
// ^ ^
В целом, то, что вы делаете, может быть плохой идеей, поскольку оно объединит пути конфигурации и образа вместе. То есть если вы переместите одну из них, приложение перестанет работать.
Пожалуйста, обратите внимание на пропущенные кавычки.
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");