基类
baseentity.h
struct BaseEntity
{
//转为参数集
virtual void ToParams(QVariantMap ¶ms) const = 0;
//从参数集设值
virtual void FromParams(const QVariantMap ¶ms) = 0;
};
#define REGISTE_MEMBER(type, memberName) \
private : \
type memberName; \
public : \
type get##memberName() const \
{ \
return memberName; \
} \
void set##memberName(const type &value) \
{ \
memberName = value; \
} \
static QString colum_##memberName() \
{ \
return #memberName; \
}
派生类
CStudentEntity.h
#include "baseentity.h"
#include <QString>
class CStudentEntity : public BaseEntity
{
REGISTE_MEMBER(QString, Name)
REGISTE_MEMBER(int, Age)
REGISTE_MEMBER(double, Grade)
REGISTE_MEMBER(bool, Sex)
public:
CStudentEntity();
virtual ~CStudentEntity();
//转为参数集
void ToParams(QVariantMap ¶ms) const;
//从参数集设值
void FromParams(const QVariantMap ¶ms);
};
CStudentEntity.cpp
#include "CStudentEntity.h"
CStudentEntity::CStudentEntity()
{
}
CStudentEntity::~CStudentEntity()
{
}
void CStudentEntity::ToParams(QVariantMap ¶ms) const
{
params.insert(colum_Name(), getName());
params.insert(colum_Age(), getAge());
params.insert(colum_Grade(), getGrade());
params.insert(colum_Sex(), getSex());
}
void CStudentEntity::FromParams(const QVariantMap ¶ms)
{
setName(params.value(colum_Name()).toString());
setAge(params.value(colum_Age()).toInt());
setGrade(params.value(colum_Grade()).toDouble());
setSex(params.value(colum_Sex()).toBool());
}