diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h
index f04cf7d6fa17d787007eb85ec87a40b9cb2a138d..fb0133f305566b5e88cf16f62cb52c4aacf5a740 100644
--- a/src/qml/qml/qqml.h
+++ b/src/qml/qml/qqml.h
@@ -419,11 +419,17 @@ class QQmlContext;
 class QQmlEngine;
 class QJSValue;
 class QJSEngine;
-Q_QML_EXPORT void qmlExecuteDeferred(QObject *);
-Q_QML_EXPORT QQmlContext *qmlContext(const QObject *);
-Q_QML_EXPORT QQmlEngine *qmlEngine(const QObject *);
-Q_QML_EXPORT QObject *qmlAttachedPropertiesObjectById(int, const QObject *, bool create = true);
-Q_QML_EXPORT QObject *qmlAttachedPropertiesObject(int *, const QObject *, const QMetaObject *, bool create);
+
+namespace QtQml {
+    // declared in namespace to avoid symbol conflicts with QtDeclarative
+    Q_QML_EXPORT void qmlExecuteDeferred(QObject *);
+    Q_QML_EXPORT QQmlContext *qmlContext(const QObject *);
+    Q_QML_EXPORT QQmlEngine *qmlEngine(const QObject *);
+    Q_QML_EXPORT QObject *qmlAttachedPropertiesObjectById(int, const QObject *, bool create = true);
+    Q_QML_EXPORT QObject *qmlAttachedPropertiesObject(int *, const QObject *,
+                                                      const QMetaObject *, bool create);
+}
+using namespace QtQml;
 
 template<typename T>
 QObject *qmlAttachedPropertiesObject(const QObject *obj, bool create = true)
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
index 377d0c49d6d66c154076e81bc40fe762c9c7b5e0..bb3ac938c342456eae2b137c2aea6bf01592467e 100644
--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -1279,6 +1279,8 @@ void QQmlEnginePrivate::doDeleteInEngineThread()
         delete d;
 }
 
+namespace QtQml {
+
 Q_AUTOTEST_EXPORT void qmlExecuteDeferred(QObject *object)
 {
     QQmlData *data = QQmlData::get(object);
@@ -1352,6 +1354,41 @@ QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *object,
     return qmlAttachedPropertiesObjectById(*idCache, object, create);
 }
 
+} // namespace QtQml
+
+#if QT_DEPRECATED_SINCE(5, 1)
+
+// Also define symbols outside namespace to keep binary compatibility with Qt 5.0
+
+Q_QML_EXPORT void qmlExecuteDeferred(QObject *obj)
+{
+    QtQml::qmlExecuteDeferred(obj);
+}
+
+Q_QML_EXPORT QQmlContext *qmlContext(const QObject *obj)
+{
+    return QtQml::qmlContext(obj);
+}
+
+Q_QML_EXPORT QQmlEngine *qmlEngine(const QObject *obj)
+{
+    return QtQml::qmlEngine(obj);
+}
+
+Q_QML_EXPORT QObject *qmlAttachedPropertiesObjectById(int id, const QObject *obj, bool create)
+{
+    return QtQml::qmlAttachedPropertiesObjectById(id, obj, create);
+}
+
+Q_QML_EXPORT QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *object,
+                                                  const QMetaObject *attachedMetaObject,
+                                                  bool create)
+{
+    return QtQml::qmlAttachedPropertiesObject(idCache, object, attachedMetaObject, create);
+}
+
+#endif // QT_DEPRECATED_SINCE(5, 1)
+
 QQmlDebuggingEnabler::QQmlDebuggingEnabler(bool printWarning)
 {
 #ifndef QQML_NO_DEBUG_PROTOCOL
diff --git a/src/qml/qml/qqmlinfo.cpp b/src/qml/qml/qqmlinfo.cpp
index 66670e26586f74233b90740a8d77cf2c9d36a2c5..32f0eeef3603f782b7e790f9e0852be69dd1dbd9 100644
--- a/src/qml/qml/qqmlinfo.cpp
+++ b/src/qml/qml/qqmlinfo.cpp
@@ -165,6 +165,8 @@ QQmlInfo::~QQmlInfo()
     }
 }
 
+namespace QtQml {
+
 QQmlInfo qmlInfo(const QObject *me)
 {
     QQmlInfoPrivate *d = new QQmlInfoPrivate;
@@ -188,5 +190,27 @@ QQmlInfo qmlInfo(const QObject *me, const QList<QQmlError> &errors)
     return QQmlInfo(d);
 }
 
+} // namespace QtQml
+
+#if QT_DEPRECATED_SINCE(5, 1)
+
+// Also define symbols outside namespace to keep binary compatibility with Qt 5.0
+
+QQmlInfo qmlInfo(const QObject *me)
+{
+    return QtQml::qmlInfo(me);
+}
+
+QQmlInfo qmlInfo(const QObject *me, const QQmlError &error)
+{
+    return QtQml::qmlInfo(me, error);
+}
+
+QQmlInfo qmlInfo(const QObject *me, const QList<QQmlError> &errors)
+{
+    return QtQml::qmlInfo(me, errors);
+}
+
+#endif // QT_DEPRECATED_SINCE(5, 1)
 
 QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmlinfo.h b/src/qml/qml/qqmlinfo.h
index 16fca9428e2b01272d1ac2d42a890750a2cf3419..56ac7886243943e00db74ec36304ea56745eae5c 100644
--- a/src/qml/qml/qqmlinfo.h
+++ b/src/qml/qml/qqmlinfo.h
@@ -48,6 +48,15 @@
 
 QT_BEGIN_NAMESPACE
 
+class QQmlInfo;
+
+namespace QtQml {
+    // declared in namespace to avoid symbol conflicts with QtDeclarative
+    Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me);
+    Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QQmlError &error);
+    Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QList<QQmlError> &errors);
+}
+using namespace QtQml;
 
 class QQmlInfoPrivate;
 class Q_QML_EXPORT QQmlInfo : public QDebug
@@ -82,18 +91,14 @@ public:
 #endif
 
 private:
-    friend Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me);
-    friend Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QQmlError &error);
-    friend Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QList<QQmlError> &errors);
+    friend Q_QML_EXPORT QQmlInfo QtQml::qmlInfo(const QObject *me);
+    friend Q_QML_EXPORT QQmlInfo QtQml::qmlInfo(const QObject *me, const QQmlError &error);
+    friend Q_QML_EXPORT QQmlInfo QtQml::qmlInfo(const QObject *me, const QList<QQmlError> &errors);
 
     QQmlInfo(QQmlInfoPrivate *);
     QQmlInfoPrivate *d;
 };
 
-Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me);
-Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QQmlError &error);
-Q_QML_EXPORT QQmlInfo qmlInfo(const QObject *me, const QList<QQmlError> &errors);
-
 QT_END_NAMESPACE
 
 #endif // QQMLINFO_H