aboutsummaryrefslogtreecommitdiffstats
path: root/examples/declarative/signals
diff options
context:
space:
mode:
authorCristián Maureira-Fredes <cmaureirafredes@gmail.com>2021-06-28 16:42:55 +0200
committerCristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io>2021-07-21 10:01:45 +0200
commitc9330b0acf680d4c2a0933b8bf67dc9b3114de5d (patch)
treef58d82c3ce57f04960e39f3af596e5a010f21a7f /examples/declarative/signals
parentb1b2cc2ebed2fcf6e31c1fbbdd3638216e34717b (diff)
qml: replace context properties and code updates
Most of the qml code in the repository was outdated, and followed bad practices, like context properties. Complementary, after the major updates for Qt6 most of the code was not relying on the new ways of register types (singletons, and using the decorator QmlElement). Drop the context property usage in the following examples: - signals/qmltopy1 - signals/qmltopy2 - signals/pytoqml2 - usingmodel - quickcontrols2/gallery - textproperties Additionally: - all the tests related to context properties - tutorials/qmlapp - tutorials/qmlsqlintegration - Removing 'scrolling' example - Fixing some flake8 warnings Change-Id: I649248c0149876bf2bf94e78e27cef7110f42f1d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Keith Kyzivat <keith.kyzivat@qt.io>
Diffstat (limited to 'examples/declarative/signals')
-rw-r--r--examples/declarative/signals/pytoqml1/view.qml2
-rw-r--r--examples/declarative/signals/pytoqml2/main.py11
-rw-r--r--examples/declarative/signals/pytoqml2/view.qml5
-rw-r--r--examples/declarative/signals/qmltopy1/main.py15
-rw-r--r--examples/declarative/signals/qmltopy1/view.qml18
-rw-r--r--examples/declarative/signals/qmltopy2/main.py13
-rw-r--r--examples/declarative/signals/qmltopy2/view.qml8
7 files changed, 49 insertions, 23 deletions
diff --git a/examples/declarative/signals/pytoqml1/view.qml b/examples/declarative/signals/pytoqml1/view.qml
index a35b4866a..aebf8432b 100644
--- a/examples/declarative/signals/pytoqml1/view.qml
+++ b/examples/declarative/signals/pytoqml1/view.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt for Python examples of the Qt Toolkit.
diff --git a/examples/declarative/signals/pytoqml2/main.py b/examples/declarative/signals/pytoqml2/main.py
index 30ec5a4f6..31e860dc1 100644
--- a/examples/declarative/signals/pytoqml2/main.py
+++ b/examples/declarative/signals/pytoqml2/main.py
@@ -45,8 +45,16 @@ import sys
from PySide6.QtCore import QObject, QTimer, QUrl, Signal, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.pytoqml2"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
class RotateValue(QObject):
valueChanged = Signal(int, arguments=['val'])
@@ -67,8 +75,7 @@ if __name__ == '__main__':
rotatevalue = RotateValue()
timer = QTimer()
timer.start(2000)
- context = view.rootContext()
- context.setContextProperty("rotatevalue", rotatevalue)
+ view.setInitialProperties({"rotatevalue": rotatevalue})
qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
view.setSource(QUrl.fromLocalFile(qml_file))
diff --git a/examples/declarative/signals/pytoqml2/view.qml b/examples/declarative/signals/pytoqml2/view.qml
index 41b185af0..ca2fb46f0 100644
--- a/examples/declarative/signals/pytoqml2/view.qml
+++ b/examples/declarative/signals/pytoqml2/view.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2020 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -41,11 +41,14 @@
import QtQuick 2.0
import QtQml 2.0
+import examples.signals.pytoqml2 1.0
+
Rectangle {
id: page
width: 500; height: 200
color: "lightgray"
+ required property RotateValue rotatevalue
Text {
id: helloText
diff --git a/examples/declarative/signals/qmltopy1/main.py b/examples/declarative/signals/qmltopy1/main.py
index d323d9a0f..b84d98a71 100644
--- a/examples/declarative/signals/qmltopy1/main.py
+++ b/examples/declarative/signals/qmltopy1/main.py
@@ -45,8 +45,16 @@ import sys
from PySide6.QtCore import QObject, QUrl, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.qmltopy1"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
class Console(QObject):
"""Output stuff on the console."""
@@ -68,13 +76,6 @@ if __name__ == '__main__':
app = QGuiApplication(sys.argv)
view = QQuickView()
- # Instantiate the Python object.
- con = Console()
-
- # Expose the object to QML.
- context = view.rootContext()
- context.setContextProperty("con", con)
-
qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
view.setSource(QUrl.fromLocalFile(qml_file))
if view.status() == QQuickView.Error:
diff --git a/examples/declarative/signals/qmltopy1/view.qml b/examples/declarative/signals/qmltopy1/view.qml
index 32a66eff4..ec8b3452c 100644
--- a/examples/declarative/signals/qmltopy1/view.qml
+++ b/examples/declarative/signals/qmltopy1/view.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -41,12 +41,18 @@
import QtQuick 2.0
+import examples.signals.qmltopy1 1.0
+
Rectangle {
id: page
width: 500; height: 200
color: "lightgray"
+ Console {
+ id: pyConsole
+ }
+
Text {
id: helloText
text: "Hello world!"
@@ -66,12 +72,12 @@ Rectangle {
objectName: "buttonMouseArea"
anchors.fill: parent
onClicked: {
- // once the "con" context has been declared,
+ // once the "console" context has been declared,
// slots can be called like functions
- con.outputFloat(123)
- con.outputStr("foobar")
- con.output(helloText.x)
- con.output(helloText.text)
+ pyConsole.outputFloat(123)
+ pyConsole.outputStr("foobar")
+ pyConsole.output(helloText.x)
+ pyConsole.output(helloText.text)
}
}
Text {
diff --git a/examples/declarative/signals/qmltopy2/main.py b/examples/declarative/signals/qmltopy2/main.py
index 1bf22b2af..21addc13b 100644
--- a/examples/declarative/signals/qmltopy2/main.py
+++ b/examples/declarative/signals/qmltopy2/main.py
@@ -1,7 +1,7 @@
#############################################################################
##
-## Copyright (C) 2016 The Qt Company Ltd.
+## Copyright (C) 2021 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -45,8 +45,15 @@ import sys
from PySide6.QtCore import QObject, QUrl, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.qmltopy2"
+QML_IMPORT_MAJOR_VERSION = 1
+
+@QmlElement
class RotateValue(QObject):
def __init__(self):
super().__init__()
@@ -64,10 +71,6 @@ if __name__ == '__main__':
app = QGuiApplication(sys.argv)
view = QQuickView()
- rotatevalue = RotateValue()
- context = view.rootContext()
- context.setContextProperty("rotatevalue", rotatevalue)
-
qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
view.setSource(QUrl.fromLocalFile(qml_file))
if view.status() == QQuickView.Error:
diff --git a/examples/declarative/signals/qmltopy2/view.qml b/examples/declarative/signals/qmltopy2/view.qml
index 6fe6087f2..b8cb23cc2 100644
--- a/examples/declarative/signals/qmltopy2/view.qml
+++ b/examples/declarative/signals/qmltopy2/view.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -40,12 +40,18 @@
import QtQuick 2.0
+import examples.signals.qmltopy2 1.0
+
Rectangle {
id: page
width: 500; height: 200
color: "lightgray"
+ RotateValue {
+ id: rotatevalue
+ }
+
Text {
id: helloText
text: "Hello world!"