DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DA::DAChartItemSerialize类 参考

针对QwtPlotItem的二进制序列化 更多...

#include <DAChartSerialize.h>

class  Header
 

Public 类型

using FpSerializeOut = std::function< QByteArray(const QwtPlotItem *) >
 序列化为QByteArray函数
 
using FpSerializeIn = std::function< QwtPlotItem *(const QByteArray &) >
 

Public 成员函数

QByteArray serializeOut (const QwtPlotItem *item) const
 序列化输出
 
QwtPlotItem * serializeIn (const QByteArray &byte) const noexcept
 
int getRtti (const QByteArray &byte) const noexcept
 在文件中获取rtti
 

静态 Public 成员函数

static void registSerializeFun (int rtti, FpSerializeIn fpIn, FpSerializeOut fpOut)
 注册序列化函数
 
static bool isSupportSerialize (int rtti)
 判断这个rtti是否支持序列化
 
static FpSerializeIn getSerializeInFun (int rtti) noexcept
 获取Serialize In方法
 
static FpSerializeOut getSerializeOutFun (int rtti)
 获取Serialize Out方法
 
template<typename T , int RTTI>
static QwtPlotItem * serializeIn_T (const QByteArray &byte)
 模板化的序列化实现
 
template<typename T >
static QByteArray serializeOut_T (const QwtPlotItem *item)
 

静态 Protected 成员函数

static QHash< int, std::pair< FpSerializeIn, FpSerializeOut > > & serializeFun ()
 

详细描述

针对QwtPlotItem的二进制序列化

成员函数说明

◆ getRtti()

int DA::DAChartItemSerialize::getRtti ( const QByteArray &  byte) const
noexcept

在文件中获取rtti

文件的rtti保存在文件头中

参数
byte文件内存
返回

◆ getSerializeInFun()

DAChartItemSerialize::FpSerializeIn DA::DAChartItemSerialize::getSerializeInFun ( int  rtti)
staticnoexcept

获取Serialize In方法

参数
rtti
返回

◆ getSerializeOutFun()

DAChartItemSerialize::FpSerializeOut DA::DAChartItemSerialize::getSerializeOutFun ( int  rtti)
static

获取Serialize Out方法

参数
rtti
返回

◆ isSupportSerialize()

bool DA::DAChartItemSerialize::isSupportSerialize ( int  rtti)
static

判断这个rtti是否支持序列化

参数
rtti
返回

◆ registSerializeFun()

void DA::DAChartItemSerialize::registSerializeFun ( int  rtti,
DAChartItemSerialize::FpSerializeIn  fpIn,
DAChartItemSerialize::FpSerializeOut  fpOut 
)
static

注册序列化函数

参数
rttiitem的rtti
fp函数指针

◆ serializeIn_T()

template<typename T , int RTTI>
static QwtPlotItem * DA::DAChartItemSerialize::serializeIn_T ( const QByteArray &  byte)
inlinestatic

模板化的序列化实现

对于QwtPlotItem实例化类的序列号,你只需要实现

QDataStream& operator<<(QDataStream& out, const QwtPlotXXXItem* item);
QDataStream& operator>>(QDataStream& in, QwtPlotXXXItem* item);

这两个函数即可,然后在cpp文件中显示实例化serializeIn_T和serializeOut_T

template QwtPlotItem* DAChartItemSerialize::serializeIn_T< QwtPlotXXXItem, QwtPlotItem::Rtti_XXX >(const
*QByteArray&); template QByteArray DAChartItemSerialize::serializeOut_T< QwtPlotXXXItem >(const QwtPlotItem*);

再通过DAChartItemSerialize::registSerializeFun注册

,&DAChartItemSerialize::serializeIn_T< QwtPlotXXXItem, QwtPlotItem::Rtti_XXX >
,&DAChartItemSerialize::serializeOut_T< QwtPlotXXXItem >);
static void registSerializeFun(int rtti, FpSerializeIn fpIn, FpSerializeOut fpOut)
注册序列化函数
Definition DAChartSerialize.cpp:173

这样,调用DAChartItemSerialize::serializeIn/serializeOut函数就能对item进行序列化

参数
byte
返回

◆ serializeOut()

QByteArray DA::DAChartItemSerialize::serializeOut ( const QwtPlotItem *  item) const

序列化输出

参数
item
返回

该类的文档由以下文件生成: