QMap<QString, QString> map;
map.insert("Hello", " World!");
QByteArray data;
QDataStream * stream = new QDataStream(&data, QIODevice::WriteOnly);
(*stream) << map;
delete stream;
// Now QByteArray should have the map as serialized data.
Это должно работать.
Вы можете задаться вопросом о безумии new и delete , но есть причина: нет способа сбросить данные из потока в bytearray, кроме как путем деконструкции поток. Или, может быть, дайте мне комментарий, если я ошибаюсь.
Edit:
Ах да, забыл одну вещь.
Вам необходимо выполнить следующие функции:
QDataStream & operator << (QDataStream & out, const MyClass & object);
QDataStream & operator >> (QDataStream & in, MyClass & object);
Введите их в заголовки ваших классов и внедрите в файл cpp этого класса.
// MyClass.h
MyClass
{
...
};
QDataStream & operator << ...
QDataStream & operator >> ...
Обратите внимание, что это должна быть глобальная функция, а не функция-член.
Обратите внимание, что вы должны создать пару для каждого из ваших классов.