Pregunta

No veo esto en la documentación en cualquier lugar, por lo que probablemente no existe, pero por si acaso:

Tengo una función que acepta como parámetro un vector de QImages. Cada QImage se carga desde el disco en algún momento y no ha sido editado - sólo se lee de. Lo ideal sería que lo que me gustaría hacer es un bucle sobre todos los QImages y generar una lista de sus rutas de archivo en un archivo XML.

Por desgracia, no estoy viendo en la documentación de cualquier forma de llegar a la ruta del archivo original que la imagen se cargó. Así que mi pregunta es, ¿es posible, dado sólo un QImage, para averiguar lo que la ruta del archivo QImage se cargó originalmente de o no?

Algo a lo largo de las líneas de:

QString QImage :: getOriginalFilepath ();

Sé que esto es probablemente una pregunta inútil, pero es un tiro siempre vale la pena preguntar, supongo.

(estoy usando Qt 4.7, por cierto.)

¿Fue útil?

Solución

Me miró a través del código, y que la información no parece ser salvo en cualquier lugar. QImage :: load (y el constructor) utiliza QImageReader (nombre del archivo, el formato) .read () y luego el resultado se copiará en sí. El QImageReader está configurado para eliminar la representación dispositivo (el objeto fichero abierto) tan pronto como la lectura de acabado.

Así, en resumen, parece que esto no es posible.

Otros consejos

También me parece que QImage no proporciona una interfaz para obtener su camino. También creo que esto no es una característica que falta, porque no hay necesidad de atar un QImage a una ruta específica. En la mayoría de los casos de uso del QImage no ha correspondiente archivo físico.

Así que la mejor manera en su situación sería subclase QImage y añadir esta función:

class MyImage : public QImage {
   QString path_;
public:
   MyImage(const QString& path); 
   QString path(); // getter 
};

Omito los detalles de implementación.

Por lo general crear una estructura para mantener el QImage y la ruta de la imagen.

struct Image
{
    QImage imageData;
    QString filename;
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top