QT序列化的具体过程是什么
时间: 2023-09-02 07:15:00 浏览: 111
Qt序列化的具体过程可以分为以下几个步骤:
1. 定义需要序列化的自定义对象,并在其中实现QDataStream输入和输出操作符。
```cpp
class MyObject
{
public:
MyObject();
//实现QDataStream输入和输出操作符
friend QDataStream& operator<<(QDataStream &out, const MyObject &obj)
{
out << obj.member1 << obj.member2 << obj.member3;
return out;
}
friend QDataStream& operator>>(QDataStream &in, MyObject &obj)
{
in >> obj.member1 >> obj.member2 >> obj.member3;
return in;
}
private:
QString member1;
int member2;
double member3;
};
```
2. 创建QDataStream对象,并指定需要序列化的文件路径和打开模式。
```cpp
QFile file("data.bin");
if (!file.open(QIODevice::WriteOnly))
return;
QDataStream out(&file);
out.setVersion(QDataStream::Qt_5_15);
```
3. 将自定义对象写入QDataStream对象中,实现序列化。
```cpp
MyObject obj;
obj.member1 = "Hello";
obj.member2 = 123;
obj.member3 = 4.567;
out << obj;
```
4. 关闭文件,序列化完成。
```cpp
file.close();
```
反序列化过程与序列化过程类似,只需要将QDataStream对象的读取操作符(>>)与自定义对象的输入操作符(<<)对应起来即可。反序列化示例:
```cpp
QFile file("data.bin");
if (!file.open(QIODevice::ReadOnly))
return;
QDataStream in(&file);
in.setVersion(QDataStream::Qt_5_15);
MyObject obj;
in >> obj;
file.close();
```
阅读全文