void tst_QMetaProperty::gadget() { const QMetaObject *mo = &MyGadget::staticMetaObject; QMetaProperty valueProp = mo->property(mo->indexOfProperty("value")); QVERIFY(valueProp.isValid()); { MyGadget g; QString hello = QLatin1Literal("hello"); QVERIFY(valueProp.writeOnGadget(&g, hello)); QCOMPARE(g.m_value, QLatin1String("hello")); QCOMPARE(valueProp.readOnGadget(&g), QVariant(hello)); QVERIFY(valueProp.resetOnGadget(&g)); QCOMPARE(valueProp.readOnGadget(&g), QVariant(QLatin1String("reset"))); } }
QVariantMap qobject2qvariant(const T* object) { QVariantMap map; auto metaObject = T::staticMetaObject; for(int i = metaObject.propertyOffset(); i < metaObject.propertyCount(); ++i) { QMetaProperty prop = metaObject.property(i); map.insert(QString::fromLatin1(prop.name()), prop.readOnGadget(object)); } return map; }