Ответ 1
Казалось, что это очень длинный путь (но ваш комментарий лучше объясняет):
Для записи:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
Для чтения:
QPixmap pixmap;
pixmap.load("yourFile.png");
QBuffer
отлично, когда вам нужен QIODevice
и вы хотите сохранить его в памяти, но если вы действительно выходите на диск, то это ненужный средний шаг.
EDIT:
Чтобы записать растровые изображения и другие вещи в один файл, я бы рекомендовал вам использовать QDataStream.
Для записи:
QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("almost any qt value object")
<< yourQPixMap << yourQList /* << etc. */;
Затем вы можете сделать это для чтения:
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;
Вам нужно убедиться, что вы читаете те же объекты, что и вы их выписали. Чтобы сохранить будущие совместимые головные боли, установите версию QDataStream явно.