我有2个班级:valueNode和keyNode.这两个类都有2个私有成员.现在我创建一个QMap< keyNode , valueNode >.为此,我覆盖operator<().我想序列化这个QMap,但我不知道如何.
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.
Run Code Online (Sandbox Code Playgroud)
这应该工作.
您可能想知道新的和删除疯狂,但有一个原因:除了解构流之外,没有办法将数据从流刷新到bytearray.或者也许有,如果我错了,请给我评论.
编辑:
哦是的,忘了一件事.
你需要做这些功能:
QDataStream & operator << (QDataStream & out, const MyClass & object);
QDataStream & operator >> (QDataStream & in, MyClass & object);
Run Code Online (Sandbox Code Playgroud)
将它们引入类的头文件中,并在该类的cpp文件中实现.
// MyClass.h
MyClass
{
...
};
QDataStream & operator << ...
QDataStream & operator >> ...
Run Code Online (Sandbox Code Playgroud)
请注意,它必须是全局函数,而不是成员函数.
请注意,您必须为每个类创建一对.