24 #include "qobjecthelper.h"
26 #include <QtCore/QMetaObject>
27 #include <QtCore/QMetaProperty>
28 #include <QtCore/QObject>
30 using namespace QJson;
32 class QObjectHelper::QObjectHelperPrivate {
35 QObjectHelper::QObjectHelper()
36 : d (new QObjectHelperPrivate)
40 QObjectHelper::~QObjectHelper()
46 const QStringList& ignoredProperties)
49 const QMetaObject *metaobject =
object->metaObject();
50 int count = metaobject->propertyCount();
51 for (
int i=0; i<count; ++i) {
52 QMetaProperty metaproperty = metaobject->property(i);
53 const char *name = metaproperty.name();
55 if (!metaproperty.isReadable() || ignoredProperties.contains(QLatin1String(name)))
58 QVariant value =
object->property(name);
59 result[QLatin1String(name)] = value;
66 const QMetaObject *metaobject =
object->metaObject();
68 for (QVariantMap::const_iterator iter = variant.constBegin(),
69 end = variant.constEnd(); iter != end; ++iter) {
70 int pIdx = metaobject->indexOfProperty( iter.key().toLatin1() );
76 QMetaProperty metaproperty = metaobject->property( pIdx );
77 QVariant::Type type = metaproperty.type();
78 QVariant v( iter.value() );
79 if ( v.canConvert( type ) ) {
81 metaproperty.write(
object, v );
82 }
else if (QLatin1String(
"QVariant") == QLatin1String(metaproperty.typeName())) {
83 metaproperty.write(
object, v );