Как объединить абсолютный и относительный пути с помощью QDir?

У меня есть относительный путь и абсолютный путь, которые выглядят примерно так:

Absolute: /tmp/somedir
Relative: anotherdir/file.txt

Я хотел бы объединить два (/tmp/somedir/anotherdir/file.txt) с QDir, но я не совсем уверен, что это правильный способ сделать это.

Согласно документации для QDir::absoluteFilePath:

«Возвращает абсолютный путь к файлу в каталоге».

Было бы идеально, если бы у меня было только имя файла, но у меня есть и относительный путь. Я просмотрел некоторые другие функции на странице, но ни одна из них не оказалась тем, что я искал.

Какую функцию я должен использовать?


person Nathan Osman    schedule 28.07.2012    source источник


Ответы (2)


Я думаю, вы ищете filePath().

QString finalPath = QDir("/tmp/somedir").filePath("anotherdir/file.txt");
person Stephen Chu    schedule 29.07.2012

Небольшое дополнение, если относительный путь к файлу начинается с точки:

QString absoluteDirPath = "/tmp/somedir";
QString relativeFilePath = "./anotherdir/file.txt";

QString incorrectPath = QDir{absoluteDirPath}.filePath(relativeFilePath);
qDebug() << "incorrect path:" << incorrectPath;
QString correctPath = QFileInfo{incorrectPath}.absoluteFilePath(); // removes the .
qDebug() << "correct path:" << correctPath;

Вывод:

incorrect path: "/tmp/somedir/./anotherdir/file.txt"
correct path: "/tmp/somedir/anotherdir/file.txt"
person Käseknacker    schedule 04.05.2021