diff --git a/src/qml/qml/qqmlopenmetaobject.cpp b/src/qml/qml/qqmlopenmetaobject.cpp
index a92d8227740306f005e345d64c9314012e135404..5928a6dfb750c6fee0069fdcb8823ee5c0af24d5 100644
--- a/src/qml/qml/qqmlopenmetaobject.cpp
+++ b/src/qml/qml/qqmlopenmetaobject.cpp
@@ -96,6 +96,23 @@ int QQmlOpenMetaObjectType::signalOffset() const
     return d->signalOffset;
 }
 
+int QQmlOpenMetaObjectType::propertyCount() const
+{
+    return d->names.count();
+}
+
+QByteArray QQmlOpenMetaObjectType::propertyName(int idx) const
+{
+    Q_ASSERT(idx >= 0 && idx < d->names.count());
+
+    return d->mob.property(idx).name();
+}
+
+QMetaObject *QQmlOpenMetaObjectType::metaObject() const
+{
+    return d->mem;
+}
+
 int QQmlOpenMetaObjectType::createProperty(const QByteArray &name)
 {
     int id = d->mob.propertyCount();
diff --git a/src/qml/qml/qqmlopenmetaobject_p.h b/src/qml/qml/qqmlopenmetaobject_p.h
index 1ca53df772f9facba6e2c445755735224427cca3..d037776150855d1215aa3059a6040d62193819d1 100644
--- a/src/qml/qml/qqmlopenmetaobject_p.h
+++ b/src/qml/qml/qqmlopenmetaobject_p.h
@@ -69,6 +69,10 @@ public:
     int propertyOffset() const;
     int signalOffset() const;
 
+    int propertyCount() const;
+    QByteArray propertyName(int) const;
+    QMetaObject *metaObject() const;
+
 protected:
     virtual void propertyCreated(int, QMetaPropertyBuilder &);
     virtual void clear();