J'essaye d'obtenir le chemin relatif des fichiers que j'aimerais écrire. Voici une situation:
J'enregistre un fichier de conf dans D:\confs\conf.txt
. J'ai dans mes programmes des fichiers lus depuis D:\images\image.bmp
. Dans mon conf.txt
Je voudrais avoir ../images/image.bmp
.
Je vois des classes utiles comme QDir
ou QFileInfo
mais je ne sais pas quel est le meilleur à utiliser. J'ai essayé:
QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp
J'ai lu le document et il est dit filePath
ne fonctionne qu'avec les fichiers de l'ensemble dir (ici D:\confs
) mais je me demande s'il existe un moyen d'indiquer de chercher à partir d'un répertoire différent et d'obtenir son chemin relatif.
Vous recherchez la méthode suivante:
QString QDir :: relativeFilePath (const QString & fileName) const
Renvoie le chemin d'accès à fileName par rapport au répertoire.
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"
En adaptant votre code selon les exemples ci-dessus, il ressemblera à ceci:
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
// ^ ^
Dans l'ensemble, ce que vous faites peut être une mauvaise idée car il associera la configuration et les chemins d'image ensemble. C'est à dire. si vous déplacez l'un d'eux, l'application cesse de fonctionner.
Veuillez également noter les citations manquantes.
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");