Как да свържа абсолютен път и относителен път с 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