qtextstream open c++ qt qtcore qdir qfileinfo

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");