aboutsummaryrefslogtreecommitdiffstats
path: root/examples/declarative/usingmodel
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/usingmodel
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/usingmodel')
-rw-r--r--examples/declarative/usingmodel/usingmodel.py25
-rw-r--r--examples/declarative/usingmodel/view.qml5
2 files changed, 19 insertions, 11 deletions
diff --git a/examples/declarative/usingmodel/usingmodel.py b/examples/declarative/usingmodel/usingmodel.py
index bd1fa2eba..3d5a03964 100644
--- a/examples/declarative/usingmodel/usingmodel.py
+++ b/examples/declarative/usingmodel/usingmodel.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,6 +45,7 @@ import sys
from PySide6.QtCore import QAbstractListModel, Qt, QUrl, QByteArray
from PySide6.QtGui import QGuiApplication
from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import qmlRegisterSingletonType
class PersonModel (QAbstractListModel):
@@ -75,9 +76,17 @@ class PersonModel (QAbstractListModel):
return d['myrole']
return None
- def populate(self):
- self._data.append({'name': 'Qt', 'myrole': 'role1'})
- self._data.append({'name': 'PySide', 'myrole': 'role2'})
+ def populate(self, data=None):
+ for item in data:
+ self._data.append(item)
+
+
+def model_callback(engine):
+ my_model = PersonModel()
+ data = [{'name': 'Qt', 'myrole': 'role1'},
+ {'name': 'PySide', 'myrole': 'role2'}]
+ my_model.populate(data)
+ return my_model
if __name__ == '__main__':
@@ -85,17 +94,15 @@ if __name__ == '__main__':
view = QQuickView()
view.setResizeMode(QQuickView.SizeRootObjectToView)
- myModel = PersonModel()
- myModel.populate()
-
- view.rootContext().setContextProperty("myModel", myModel)
+ qmlRegisterSingletonType(PersonModel, "PersonModel", 1, 0, "MyModel", model_callback)
qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
view.setSource(QUrl.fromLocalFile(qml_file))
if view.status() == QQuickView.Error:
sys.exit(-1)
view.show()
- app.exec()
+ r = app.exec()
# Deleting the view before it goes out of scope is required to make sure all child QML instances
# are destroyed in the correct order.
del view
+ sys.exit(r)
diff --git a/examples/declarative/usingmodel/view.qml b/examples/declarative/usingmodel/view.qml
index 8eb4f7f97..682723d27 100644
--- a/examples/declarative/usingmodel/view.qml
+++ b/examples/declarative/usingmodel/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.
@@ -39,12 +39,13 @@
****************************************************************************/
import QtQuick 2.0
+import PersonModel 1.0
ListView {
width: 100
height: 100
anchors.fill: parent
- model: myModel
+ model: MyModel
delegate: Component {
Rectangle {
height: 25