我有两个课程:valueNode
和keyNode
。这两个类都有2个私有成员。现在我创建一个QMap< keyNode , valueNode >
。为此,我重写了operator<()
。我想序列化这个QMap,但我不知道如何。
答案 0 :(得分:7)
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,除非解构流。或者也许有,如果我错了,请给我评论。
编辑:
是的,忘了一件事。您需要制作以下功能:
QDataStream & operator << (QDataStream & out, const MyClass & object);
QDataStream & operator >> (QDataStream & in, MyClass & object);
在类的标题中引入它们,并在该类的cpp文件中实现。
// MyClass.h
MyClass
{
...
};
QDataStream & operator << ...
QDataStream & operator >> ...
请注意,它必须是全局函数,不是成员函数。
请注意,您必须为每个类创建一对。
答案 1 :(得分:0)
将其存储在QVariant中,然后您可以使用QDataStream来读/写它。