diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-04-28 16:46:23 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-05-02 16:44:37 +0200 |
| commit | 9e0da8e0288d4c87eaa6f8a22ec107e04d0cd305 (patch) | |
| tree | 3cde2b2b667ebd58002a19894440c47cee0cdc8e /examples/qml/tutorials/extending-qml-advanced/extended/doc | |
| parent | fbb22873530c200b4ddb9b2da91764948bb9da71 (diff) | |
Move the QML reference examples around to match the structure in Qt
Adapt the tests accordingly.
Task-number: PYSIDE-2206
Task-number: QTBUG-111033
Pick-to: 6.5
Change-Id: I332d6467da56b88ecbf9282d23092d8d47b730e0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'examples/qml/tutorials/extending-qml-advanced/extended/doc')
| -rw-r--r-- | examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst b/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst new file mode 100644 index 000000000..745960535 --- /dev/null +++ b/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst @@ -0,0 +1,41 @@ +.. _qml-extension-objects-example: + +Extending QML - Extension Objects Example +========================================= + +This example builds on the the :ref:`qml-adding-types-example`. + +Shows how to use QmlExtended decorator to provide an extension object to a +QLineEdit without modifying or subclassing it. + +Firstly, the LineEditExtension class is registered with the QML system as an +extension of QLineEdit. We declare a foreign type to do this as we cannot +modify Qt's internal QLineEdit class. + +.. code-block:: python + + @QmlNamedElement("QLineEdit") + @QmlExtended(LineEditExtension) + @QmlForeign(QLineEdit) + class LineEditForeign(QObject): + + +Note the usage of ``QmlNamedElement()`` instead of ``QmlElement()``. +``QmlElement()`` uses the name of the containing type by default, +``LineEditExtension`` in this case. As the class being an extension class is +an implementation detail, we choose the more natural name ``QLineEdit`` +instead. + +The QML engine then instantiates a QLineEdit. + +In QML, a property is set on the line edit that only exists in the +``LineEditExtension`` class: + +.. code-block:: javascript + + QLineEdit { + left_margin: 20 + } + +The extension type performs calls on the ``QLineEdit`` that otherwise will not +be accessible to the QML engine. |
