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

18

Решение

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

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

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

Пожалуйста, обратите внимание на пропущенные кавычки.

15

Другие решения

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

По вопросам рекламы [email protected]