qt中 class classfiyInfo { public: QColor _color; bool _isSelect;}重写operator>>和operator<<序列化到文件
时间: 2024-11-20 21:44:11 浏览: 24
在Qt中,`QClassifiInfo` 类想要支持序列化到文件,需要重写 `>>` 和 `<<` 运算符(`QDataStream` 的朋友类),以便将对象的数据流式地读写入文件。这两个运算符通常被称为输入流赋值和输出流赋值。
首先,我们来看如何重写 `operator>>` (从文件读取):
```cpp
friend QDataStream &operator>>(QDataStream &in, QClassifiInfo &info);
```
然后是它的实现部分:
```cpp
QDataStream &operator>>(QDataStream &in, QClassifiInfo &info) {
in >> info._color; // 读取 QColor
in >> info._isSelect; // 读取 bool
return in;
}
```
接下来是 `operator<<` (向文件写入):
```cpp
friend QDataStream &operator<<(QDataStream &out, const QClassifiInfo &info);
```
其实现如下:
```cpp
QDataStream &operator<<(QDataStream &out, const QClassifiInfo &info) {
out << info._color; // 写入 QColor
out << info._isSelect; // 写入 bool
return out;
}
```
现在你可以使用 `QFile`, `QTextStream` 或 `QDataStream` 来操作这个类的对象了,比如保存到文件:
```cpp
QFile file("data.txt", QIODevice::WriteOnly);
QDataStream out(&file);
QClassifiInfo myInfo;
// 设置颜色和选择状态
myInfo._color = QColor(0, 255, 0); // 绿色
myInfo._isSelect = true;
out << myInfo; // 将信息写入文件
```
以及从文件读取:
```cpp
QFile file("data.txt", QIODevice::ReadOnly);
QDataStream in(&file);
QClassifiInfo loadedInfo;
in >> loadedInfo; // 从文件读取并保存到loadedInfo
```
阅读全文