Получить относительный путь из файла в Qt

Я пытаюсь получить относительный путь от файлов, которые я хотел бы написать. Вот ситуация:

Я сохраняю файл 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 работает только с файлами в наборе каталогов (здесь D:\confs), но мне интересно, есть ли способ указать для поиска из другого каталога и получить его относительный путь.


person user3627590    schedule 02.06.2014    source источник


Ответы (1)


Вы ищете следующий метод:

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

В целом, то, что вы делаете, может быть плохой идеей, поскольку это соединит пути конфигурации и образа. т.е. если вы переместите любой из них, приложение перестанет работать.

Также обратите внимание на отсутствующие кавычки.

person lpapp    schedule 02.06.2014
comment
Спасибо работает отлично. Я должен был более внимательно прочитать документ о QDir. Я знаю, что это может быть рискованно, но confs можно экспортировать для других компьютеров, поэтому, если папка conf и папка изображений (с учетом их относительного пути) экспортируются одновременно, приложение не рухнет. - person user3627590; 03.06.2014