Frage

Ich sehe dies in der Dokumentation nicht überall, so dass es wahrscheinlich nicht existiert, sondern nur für den Fall:

Ich habe eine Funktion, die als Parameter einen Vektor von QImages akzeptiert. Jede QImage wurde von der Festplatte zu einem bestimmten Zeitpunkt geladen und wird bearbeitet nicht - es wird aus nur lesen. Im Idealfall ist das, was ich tun möchte Schleife über alle QImages und Ausgabe eine Liste ihrer Dateipfade in eine XML-Datei.

Leider ist ich keine Möglichkeit, in der Dokumentation zu sehen, an dem ursprünglichen Dateipfad zu erhalten, dass das Bild aus geladen wurde. Also meine Frage ist, ist es möglich gegeben, nur ein QImage, was Dateipfad ursprünglich aus oder nicht geladen wurde die QImage herauszufinden?

Etwas entlang der Linien von:

QString QImage :: getOriginalFilepath ();

Ich weiß, das ist wahrscheinlich eine vergebliche Frage, aber es ist immer ein Versuch wert zu fragen, nehme ich an.

(Ich bin mit Qt 4.7, übrigens.)

War es hilfreich?

Lösung

Ich schaute durch den Code, und dass Informationen nicht angezeigt werden überall gespeichert werden. QImage :: Last (und der Konstruktor) verwendet QImageReader (Dateiname, Format) .mehr () und kopiert dann das Ergebnis an sich. Die QImageReader gesetzt, um die Gerätedarstellung (das geöffnete Datei-Objekt), sobald es fertig ist das Lesen zu löschen.

So in der Zusammenfassung, es scheint, dass dies nicht möglich ist.

Andere Tipps

Auch für mich scheint es, dass QImage keine Schnittstelle den Weg zu bekommen bietet. Ich denke auch, dass dies nicht ein fehlendes Feature ist, denn es gibt keine Notwendigkeit, eine QImage zu einem bestimmten Pfad zu binden. In der Mehrzahl aller Anwendungsfälle hat die QImage keine entsprechende physische Datei.

So ist die beste Art und Weise in Ihrer Situation wäre QImage Unterklasse und diese Funktion hinzuzufügen:

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

Ich lasse die Implementierungsdetails.

Ich schaffe in der Regel eine Struktur für zu halten die QImage und dem Bildpfad.

struct Image
{
    QImage imageData;
    QString filename;
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top