Вопрос

Я не вижу этого в документации в любом месте, поэтому, вероятно, не существует, но на всякий случай:

У меня есть функция, которая принимает в качестве параметра вектор qimages. Каждый QImage был загружен с диска в какой-то момент и не был отредактирован - это просто читается. В идеале то, что я хотел бы сделать, это LOOP по всем операциям и выводит список их файлов к файлу XML.

К сожалению, я не вижу в документации любого способа добраться на исходном пути файла, из которого изображение было загружено. Итак, мой вопрос, возможно, это возможно, учитывая только kImage, чтобы выяснить, какой путь к файлу kimage был первоначально загружен или нет?

Что-то вдоль линий:

QString Qimage :: GetoriginalFilePath ();

Я знаю, что это, вероятно, бесполезный вопрос, но его всегда стоит спросить, я полагаю.

(Я использую Qt 4.7, кстати.)

Это было полезно?

Решение

Я просмотрел код, и эта информация не будет сохранена где угодно. Qimage :: load (и конструктор) использует qimagereader (имя файла, формат) .read (), а затем копирует результат к себе. QimageReader установлен для удаления представления устройства (открытый файл объекта), как только он закончил чтение.

Таким образом, в резюме, кажется, что это невозможно.

Другие советы

Также для меня кажется, что QImage не предоставляет интерфейс, чтобы получить свой путь. Я также думаю, что это не пропавшая функция, потому что нет необходимости связывать kImage к определенному пути. В большинстве всех случаев использования QImage не имеет соответствующего физического файла.

Таким образом, лучший путь в вашей ситуации будет подклассным QIMage и добавить эту функцию:

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

Я опускаю детали реализации.

Я обычно создаю структуру для удержания kImage и пути изображения.

struct Image
{
    QImage imageData;
    QString filename;
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top