Qt QMetaProperty::read vs object.property which is better

I am trying to find out what is the difference in using

const QMetaObject me = k.staticMetaObject;

for(int i = me.propertyOffset(); i< me.propertyCount() ; i++)
{
    QMetaProperty prop = me.property(i);
    const char *propName = prop.name();
    QString val = k.property(propName).toString();

    QString name = prop.name();
    QVariant value2 = prop.read(&k);
}

Both prop.read(&k); and k.property(propName) give the value. So why use the one other the other?