aboutsummaryrefslogtreecommitdiffstats
path: root/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties
diff options
context:
space:
mode:
Diffstat (limited to 'examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties')
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py20
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py13
2 files changed, 23 insertions, 10 deletions
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py
index 63e86c3e0..f38bfd305 100644
--- a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py
@@ -1,7 +1,7 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-from PySide6.QtCore import QDate, QObject, ClassInfo, Property
+from PySide6.QtCore import QDate, QObject, ClassInfo, Property, Signal
from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
from person import Person
@@ -15,37 +15,44 @@ QML_IMPORT_MAJOR_VERSION = 1
@QmlAnonymous
class BirthdayPartyAttached(QObject):
+ rsvp_changed = Signal()
def __init__(self, parent=None):
super().__init__(parent)
self._rsvp = QDate()
- @Property(QDate)
+ @Property(QDate, notify=rsvp_changed, final=True)
def rsvp(self):
return self._rsvp
@rsvp.setter
def rsvp(self, d):
- self._rsvp = d
+ if self._rsvp != d:
+ self._rsvp = d
+ self.rsvp_changed.emit()
@QmlElement
@ClassInfo(DefaultProperty="guests")
@QmlAttached(BirthdayPartyAttached)
class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
def __init__(self, parent=None):
super().__init__(parent)
self._host = None
self._guests = []
- @Property(Person)
+ @Property(Person, notify=host_changed, final=True)
def host(self):
return self._host
@host.setter
def host(self, h):
- self._host = h
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
def guest(self, n):
return self._guests[n]
@@ -55,9 +62,10 @@ class BirthdayParty(QObject):
def appendGuest(self, guest):
self._guests.append(guest)
+ self.guests_changed.emit()
@staticmethod
def qmlAttachedProperties(self, o):
return BirthdayPartyAttached(o)
- guests = ListProperty(Person, appendGuest)
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py
index 89844c87f..503aaf65e 100644
--- a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py
@@ -1,7 +1,7 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-from PySide6.QtCore import QObject, Property
+from PySide6.QtCore import QObject, Property, Signal
from PySide6.QtQml import QmlAnonymous, QmlElement
# To be used on the @QmlElement decorator
@@ -12,20 +12,25 @@ QML_IMPORT_MAJOR_VERSION = 1
@QmlAnonymous
class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
def __init__(self, parent=None):
super().__init__(parent)
self._name = ''
self._shoe_size = 0
- @Property(str)
+ @Property(str, notify=name_changed, final=True)
def name(self):
return self._name
@name.setter
def name(self, n):
- self._name = n
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
- @Property(int)
+ @Property(int, notify=shoe_size_changed, final=True)
def shoe_size(self):
return self._shoe_size