c++ - open - Obtener ruta relativa de un archivo en Qt
qt save file (2)
Estoy tratando de obtener la ruta relativa de los archivos que me gustaría escribir. Aquí una situación:
D:/confs/conf.txt
un archivo conf en D:/confs/conf.txt
. Tengo en mis programas algunos archivos leídos de D:/images/image.bmp
. En mi conf.txt
me gustaría tener ../images/image.bmp
.
Veo algunas clases útiles como QDir
o QFileInfo
pero no sé cuál es el mejor uso. Lo intenté:
QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp
Leí el documento y dice que filePath
solo funciona con archivos en el conjunto de directorios (aquí D:/confs
) pero me pregunto si hay una forma de indicar que se busque desde un directorio diferente y obtener su ruta relativa.
Estás buscando el siguiente método:
QString QDir :: relativeFilePath (const QString & fileName) const
Devuelve la ruta a fileName relativa al directorio.
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"
Adaptando su código de acuerdo con los ejemplos anteriores, se verá como sigue:
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
// ^ ^
En general, lo que haga podría ser una mala idea, ya que unirá las rutas de configuración e imagen. Es decir, si mueves alguno de ellos, la aplicación deja de funcionar.
Por favor, note también las citas que faltan.
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");