QJsonObject BaseConfig::toJsonObject() const
{
QVariantMap map;
const auto metaObject = this->metaObject();
LOG() << metaObject->propertyOffset() << metaObject->propertyCount();
for(int i = metaObject->propertyOffset();
i < metaObject->propertyCount();i++)
{
auto pname = metaObject->property(i).name();
LOG() << pname << ":" << this->property(pname) << metaObject->property(i).isEnumType();
if(metaObject->property(i).isEnumType() == true) //枚举变量
{
auto tpname = metaObject->property(i).typeName();
int index = BaseConfig::staticMetaObject.indexOfEnumerator(tpname);
auto v = BaseConfig::staticMetaObject.enumerator(index).valueToKey(this->property(pname).toInt());
map.insert(pname,v);
}else
map.insert(pname,this->property(pname));
}
return QJsonObject::fromVariantMap(map);
}
void BaseConfig::loadFromJsonObject(const QJsonObject &jobj)
{
QVariantMap map = jobj.toVariantMap();
for(auto p:map.keys())
{
QVariant v = map.value(p);
LOG() << this->setProperty(p.toLatin1(),v) << p << v;
}
}