diff options
Diffstat (limited to 'examples/declarative/referenceexamples/extended')
4 files changed, 0 insertions, 147 deletions
diff --git a/examples/declarative/referenceexamples/extended/doc/extended.rst b/examples/declarative/referenceexamples/extended/doc/extended.rst deleted file mode 100644 index 745960535..000000000 --- a/examples/declarative/referenceexamples/extended/doc/extended.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _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. diff --git a/examples/declarative/referenceexamples/extended/example.qml b/examples/declarative/referenceexamples/extended/example.qml deleted file mode 100644 index e4af3bec5..000000000 --- a/examples/declarative/referenceexamples/extended/example.qml +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -import examples.extend 1.0 - -QLineEdit { - left_margin: 20 -} diff --git a/examples/declarative/referenceexamples/extended/extended.pyproject b/examples/declarative/referenceexamples/extended/extended.pyproject deleted file mode 100644 index 127a3a76a..000000000 --- a/examples/declarative/referenceexamples/extended/extended.pyproject +++ /dev/null @@ -1,3 +0,0 @@ -{ - "files": ["main.py", "example.qml"] -} diff --git a/examples/declarative/referenceexamples/extended/main.py b/examples/declarative/referenceexamples/extended/main.py deleted file mode 100644 index 6ee386401..000000000 --- a/examples/declarative/referenceexamples/extended/main.py +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -"""PySide6 port of the qml/examples/qml/referenceexamples/extended example from Qt v6.x""" - -from pathlib import Path -import sys - -from PySide6.QtCore import QObject, QUrl, Property -from PySide6.QtWidgets import QApplication, QLineEdit -from PySide6.QtQml import (QQmlComponent, QQmlEngine, QmlForeign, QmlExtended, - QmlNamedElement) - - -# To be used on the @QmlElement decorator -# (QML_IMPORT_MINOR_VERSION is optional) -QML_IMPORT_NAME = "examples.extend" -QML_IMPORT_MAJOR_VERSION = 1 - - -class LineEditExtension(QObject): - - def __init__(self, parent=None): - super().__init__(parent) - self._line_edit = parent - - @Property(int) - def left_margin(self): - return self._line_edit.textMargins().left() - - @left_margin.setter - def left_margin(self, m): - margins = self._line_edit.textMargins() - margins.setLeft(m) - self._line_edit.setTextMargins(margins) - - @Property(int) - def right_margin(self): - return self._line_edit.textMargins().right() - - @right_margin.setter - def right_margin(self, m): - margins = self._line_edit.textMargins() - margins.setRight(m) - self._line_edit.setTextMargins(margins) - - @Property(int) - def top_margin(self): - return self._line_edit.textMargins().top() - - @top_margin.setter - def top_margin(self, m): - margins = self._line_edit.textMargins() - margins.setTop(m) - self._line_edit.setTextMargins(margins) - - @Property(int) - def bottom_margin(self): - return self._line_edit.textMargins().bottom() - - @bottom_margin.setter - def bottom_margin(self, m): - margins = self._line_edit.textMargins() - margins.setBottom(m) - self._line_edit.setTextMargins(margins) - - -@QmlNamedElement("QLineEdit") -@QmlExtended(LineEditExtension) -@QmlForeign(QLineEdit) -class LineEditForeign(QObject): - - def __init__(self, parent=None): - super().__init__(parent) - - -if __name__ == '__main__': - app = QApplication(sys.argv) - - qml_file = Path(__file__).parent / "example.qml" - url = QUrl.fromLocalFile(qml_file) - engine = QQmlEngine() - component = QQmlComponent(engine, url) - widget = component.create() - if not widget: - print(component.errors()) - del engine - sys.exit(-1) - - widget.show() - r = app.exec() - # Deleting the engine before it goes out of scope is required to make sure - # all child QML instances are destroyed in the correct order. - del engine - sys.exit(r) |