【发布时间】:2016-10-05 07:43:43
【问题描述】:
这是我的头文件的一个例子:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
//// spare classes
class Foo {
public:
Foo() {}
int a;
QString b;
};
class Bar {
public:
Bar() {}
int c;
QString d;
QHash<QString, Foo> e;
};
//// widget
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
QHash<QString, Bar> database;
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
在主要的小部件类中,我有一个数据库,它是一个以 QString 作为键和一个 Bar 对象作为值的散列。 Bar 类包含另一个散列,其中 QString 作为键,Foo 对象作为值。
我想将数据库保存到二进制文件中。翻阅了一下,我发现我应该使用 QByteArray 和 QDataStream,但是在散列中使用对象而不是简单的变量让我抓狂。
【问题讨论】:
-
我不明白这个问题。这是一个简单的序列化问题。最简单的方法是为每个类编写序列化函数。 1.写一个标题(例如魔术代码,版本,......以避免在以后的版本中出现问题)。 2. 序列化大小(k/v 对的数量)。 3. 序列化密钥。 4. 序列化值。 5. 重复 3 和 4 直到完成。
标签: qt file serialization hash save