diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2019-08-19 17:16:39 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2019-08-21 16:01:26 +0200 |
commit | c400b7765ff5204edf9243387f1928a770985382 (patch) | |
tree | 01f7d7022831b5cb0721cca48bd20deecae98a48 /src | |
parent | e2b0e8dc7996013b66df3243edeb8746f12af5c9 (diff) |
qqml.h: add qmlRegisterAnonymousType
This version behaves for the most part like qmlRegisterType(), but it
adds a uri and major version, which qmlplugindump can use to put the
tpyes into the correct plugins.qmltyes file.
Change-Id: I50f620216439a3edc66ac740cb051c2fbb936e51
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/testlib/main.cpp | 2 | ||||
-rw-r--r-- | src/qml/doc/src/qmlfunctions.qdoc | 10 | ||||
-rw-r--r-- | src/qml/qml/qqml.h | 10 | ||||
-rw-r--r-- | src/qmlmodels/qqmlmodelsmodule.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquickitemsmodule.cpp | 40 | ||||
-rw-r--r-- | src/quick/util/qquickutilmodule.cpp | 4 |
6 files changed, 44 insertions, 28 deletions
diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp index fbaf3bc4e2..33fe912692 100644 --- a/src/imports/testlib/main.cpp +++ b/src/imports/testlib/main.cpp @@ -150,7 +150,7 @@ public: qmlRegisterType<QuickTestEvent>(uri,1,0,"TestEvent"); qmlRegisterType<QuickTestEvent>(uri,1,2,"TestEvent"); qmlRegisterType<QuickTestUtil>(uri,1,0,"TestUtil"); - qmlRegisterType<QQuickTouchEventSequence>(); + qmlRegisterAnonymousType<QQuickTouchEventSequence>(uri); // Auto-increment the import to stay in sync with ALL future QtQuick minor versions from 5.11 onward qmlRegisterModule(uri, 1, QT_VERSION_MINOR); diff --git a/src/qml/doc/src/qmlfunctions.qdoc b/src/qml/doc/src/qmlfunctions.qdoc index 9c106558fd..c71d18418a 100644 --- a/src/qml/doc/src/qmlfunctions.qdoc +++ b/src/qml/doc/src/qmlfunctions.qdoc @@ -274,6 +274,16 @@ */ /*! + \fn int qmlRegisterAnonymousType(const char *uri, int versionMajor) + + This template function registers the C++ type in the QML system. Instances of this type cannot be created from the QML system. + + Use this function when the type will not be referenced by name. Use \a uri and \a versionMajor to indicate to which module the type belongs. + + \sa {Choosing the Correct Integration Method Between C++ and QML} +*/ + +/*! \fn int qmlRegisterType() \relates QQmlEngine \overload diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h index bfd1c88b28..a93b012c70 100644 --- a/src/qml/qml/qqml.h +++ b/src/qml/qml/qqml.h @@ -102,7 +102,7 @@ class QQmlPropertyValueInterceptor; void Q_QML_EXPORT qmlClearTypeRegistrations(); template<typename T> -int qmlRegisterType() +int qmlRegisterAnonymousType(const char *uri, int versionMajor=1) { QML_GETTYPENAMES @@ -115,7 +115,7 @@ int qmlRegisterType() nullptr, QString(), - nullptr, 0, 0, nullptr, &T::staticMetaObject, + uri, versionMajor, 0, nullptr, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc<T>(), QQmlPrivate::attachedPropertiesMetaObject<T>(), @@ -133,6 +133,12 @@ int qmlRegisterType() return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } +template<typename T> +QT_DEPRECATED_VERSION_X_5_14("Use qmlRegisterAnonymousType instead") int qmlRegisterType() +{ + return qmlRegisterAnonymousType<T>(""); +} + int Q_QML_EXPORT qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString& message); template<typename T> diff --git a/src/qmlmodels/qqmlmodelsmodule.cpp b/src/qmlmodels/qqmlmodelsmodule.cpp index 2db5dd834f..d569d8e23c 100644 --- a/src/qmlmodels/qqmlmodelsmodule.cpp +++ b/src/qmlmodels/qqmlmodelsmodule.cpp @@ -69,7 +69,7 @@ void QQmlModelsModule::registerQmlTypes() // Don't add anything here. These are only for backwards compatibility. #if QT_CONFIG(qml_object_model) qmlRegisterType<QQmlInstantiator>("QtQml", 2, 1, "Instantiator"); // Only available in >= 2.1 - qmlRegisterType<QQmlInstanceModel>(); + qmlRegisterAnonymousType<QQmlInstanceModel>("QtQml", 2); #endif } @@ -81,7 +81,7 @@ void QQmlModelsModule::registerQuickTypes() #if QT_CONFIG(qml_object_model) qmlRegisterType<QQmlInstantiator>(uri, 2, 1, "Instantiator"); - qmlRegisterType<QQmlInstanceModel>(); + qmlRegisterAnonymousType<QQmlInstanceModel>(uri, 2); qmlRegisterType<QQmlObjectModel>(uri, 2, 0, "VisualItemModel"); #endif #if QT_CONFIG(qml_list_model) @@ -114,7 +114,7 @@ void QQmlModelsModule::defineModule() qmlRegisterType<QQmlObjectModel>(uri, 2, 1, "ObjectModel"); qmlRegisterType<QQmlObjectModel,3>(uri, 2, 3, "ObjectModel"); qmlRegisterType<QQmlInstantiator>(uri, 2, 14, "Instantiator"); - qmlRegisterType<QQmlInstanceModel>(); + qmlRegisterAnonymousType<QQmlInstanceModel>(uri, 2); #endif #if QT_CONFIG(itemmodel) qmlRegisterType<QItemSelectionModel>(uri, 2, 2, "ItemSelectionModel"); diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index 33c4fae96d..d8ad104a6d 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -247,27 +247,27 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickTextInput>(uri,major,minor,"TextInput"); qmlRegisterType<QQuickTextInput,2>(uri,2,2,"TextInput"); qmlRegisterType<QQuickTextInput,3>(uri,2,4,"TextInput"); - qmlRegisterType<QQuickItemGrabResult>(); + qmlRegisterAnonymousType<QQuickItemGrabResult>(uri, major); #if QT_CONFIG(quick_shadereffect) - qmlRegisterType<QQuickItemLayer>(); -#endif - qmlRegisterType<QQuickAnchors>(); - qmlRegisterType<QQuickKeyEvent>(); - qmlRegisterType<QQuickMouseEvent>(); - qmlRegisterType<QQuickWheelEvent>(); - qmlRegisterType<QQuickCloseEvent>(); - qmlRegisterType<QQuickTransform>(); + qmlRegisterAnonymousType<QQuickItemLayer>(uri, major); +#endif + qmlRegisterAnonymousType<QQuickAnchors>(uri, major); + qmlRegisterAnonymousType<QQuickKeyEvent>(uri, major); + qmlRegisterAnonymousType<QQuickMouseEvent>(uri, major); + qmlRegisterAnonymousType<QQuickWheelEvent>(uri, major); + qmlRegisterAnonymousType<QQuickCloseEvent>(uri, major); + qmlRegisterAnonymousType<QQuickTransform>(uri, major); #if QT_CONFIG(quick_path) - qmlRegisterType<QQuickPathElement>(); - qmlRegisterType<QQuickCurve>(); + qmlRegisterAnonymousType<QQuickPathElement>(uri, major); + qmlRegisterAnonymousType<QQuickCurve>(uri, major); #endif - qmlRegisterType<QQuickScaleGrid>(); - qmlRegisterType<QQuickTextLine>(); - qmlRegisterType<QQuickPen>(); - qmlRegisterType<QQuickFlickableVisibleArea>(); + qmlRegisterAnonymousType<QQuickScaleGrid>(uri, major); + qmlRegisterAnonymousType<QQuickTextLine>(uri, major); + qmlRegisterAnonymousType<QQuickPen>(uri, major); + qmlRegisterAnonymousType<QQuickFlickableVisibleArea>(uri, major); qRegisterMetaType<QQuickAnchorLine>("QQuickAnchorLine"); - qmlRegisterType<QQuickTextDocument>(); + qmlRegisterAnonymousType<QQuickTextDocument>(uri, major); qmlRegisterUncreatableType<QQuickKeyNavigationAttached>(uri,major,minor,"KeyNavigation",QQuickKeyNavigationAttached::tr("KeyNavigation is only available via attached properties")); @@ -279,7 +279,7 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickPinchArea>(uri,major,minor,"PinchArea"); qmlRegisterType<QQuickPinch>(uri,major,minor,"Pinch"); - qmlRegisterType<QQuickPinchEvent>(); + qmlRegisterAnonymousType<QQuickPinchEvent>(uri, major); #if QT_CONFIG(quick_shadereffect) qmlRegisterType<QQuickShaderEffectSource>("QtQuick", 2, 0, "ShaderEffectSource"); @@ -302,7 +302,7 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickParentChange>(uri, major, minor,"ParentChange"); qmlRegisterType<QQuickAnchorChanges>(uri, major, minor,"AnchorChanges"); - qmlRegisterType<QQuickAnchorSet>(); + qmlRegisterAnonymousType<QQuickAnchorSet>(uri, major); qmlRegisterType<QQuickAnchorAnimation>(uri, major, minor,"AnchorAnimation"); qmlRegisterType<QQuickParentAnimation>(uri, major, minor,"ParentAnimation"); #if QT_CONFIG(quick_path) @@ -312,8 +312,8 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) #if QT_CONFIG(quick_draganddrop) qmlRegisterType<QQuickDropArea>("QtQuick", 2, 0, "DropArea"); - qmlRegisterType<QQuickDropEvent>(); - qmlRegisterType<QQuickDropAreaDrag>(); + qmlRegisterAnonymousType<QQuickDropEvent>(uri, 2); + qmlRegisterAnonymousType<QQuickDropAreaDrag>(uri, 2); qmlRegisterUncreatableType<QQuickDrag>("QtQuick", 2, 0, "Drag", QQuickDragAttached::tr("Drag is only available via attached properties")); #endif diff --git a/src/quick/util/qquickutilmodule.cpp b/src/quick/util/qquickutilmodule.cpp index d222a0c0be..7c8134ba6f 100644 --- a/src/quick/util/qquickutilmodule.cpp +++ b/src/quick/util/qquickutilmodule.cpp @@ -99,7 +99,7 @@ void QQuickUtilModule::defineModule() qmlRegisterType<QQuickVector3dAnimation>("QtQuick",2,0,"Vector3dAnimation"); #if QT_CONFIG(validator) - qmlRegisterType<QValidator>(); + qmlRegisterAnonymousType<QValidator>("QtQuick", 2); qmlRegisterType<QQuickIntValidator>("QtQuick",2,0,"IntValidator"); qmlRegisterType<QQuickDoubleValidator>("QtQuick",2,0,"DoubleValidator"); qmlRegisterType<QRegExpValidator>("QtQuick",2,0,"RegExpValidator"); @@ -117,7 +117,7 @@ void QQuickUtilModule::defineModule() #if QT_CONFIG(quick_shadereffect) && QT_CONFIG(opengl) qmlRegisterType<QQuickUniformAnimator>("QtQuick", 2, 2, "UniformAnimator"); #endif - qmlRegisterType<QQuickStateOperation>(); + qmlRegisterAnonymousType<QQuickStateOperation>("QtQuick", 2); qmlRegisterCustomType<QQuickPropertyChanges>("QtQuick",2,0,"PropertyChanges", new QQuickPropertyChangesParser); |