diff options
Diffstat (limited to 'examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties')
3 files changed, 40 insertions, 18 deletions
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py index 8c6f7e8fb..3f6102c66 100644 --- a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py +++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-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 QObject, ClassInfo, Property +from PySide6.QtCore import QObject, ClassInfo, Property, Signal from PySide6.QtQml import QmlElement, ListProperty from person import Person @@ -16,19 +16,23 @@ QML_IMPORT_MAJOR_VERSION = 1 @QmlElement @ClassInfo(DefaultProperty="guests") 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] @@ -38,5 +42,6 @@ class BirthdayParty(QObject): def appendGuest(self, guest): self._guests.append(guest) + self.guests_changed.emit() - guests = ListProperty(Person, appendGuest) + guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True) diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py index 657ce272b..3cdddbd06 100644 --- a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py +++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py @@ -37,8 +37,8 @@ if __name__ == '__main__': name = guest.name print(f" {name}") if not best_shoe or best_shoe.shoe.price < guest.shoe.price: - best_shoe = guest; + best_shoe = guest if best_shoe: - print(f"{best_shoe.name} is wearing the best shoes!"); + print(f"{best_shoe.name} is wearing the best shoes!") del engine sys.exit(0) diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py index 42434fffa..ccd439e88 100644 --- a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py +++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-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.QtGui import QColor from PySide6.QtQml import QmlAnonymous, QmlElement @@ -13,6 +13,11 @@ QML_IMPORT_MAJOR_VERSION = 1 @QmlAnonymous class ShoeDescription(QObject): + brand_changed = Signal() + size_changed = Signal() + price_changed = Signal() + color_changed = Signal() + def __init__(self, parent=None): super().__init__(parent) self._brand = '' @@ -20,55 +25,67 @@ class ShoeDescription(QObject): self._price = 0 self._color = QColor() - @Property(str) + @Property(str, notify=brand_changed, final=True) def brand(self): return self._brand @brand.setter def brand(self, b): - self._brand = b + if self._brand != b: + self._brand = b + self.brand_changed.emit() - @Property(int) + @Property(int, notify=size_changed, final=True) def size(self): return self._size @size.setter def size(self, s): - self._size = s + if self._size != s: + self._size = s + self.size_changed.emit() - @Property(float) + @Property(float, notify=price_changed, final=True) def price(self): return self._price @price.setter def price(self, p): - self._price = p + if self._price != p: + self._price = p + self.price_changed.emit() - @Property(QColor) + @Property(QColor, notify=color_changed, final=True) def color(self): return self._color @color.setter def color(self, c): - self._color = c + if self._color != c: + self._color = c + self.color_changed.emit() @QmlAnonymous class Person(QObject): + name_changed = Signal() + def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() - @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(ShoeDescription) + @Property(ShoeDescription, final=True) def shoe(self): return self._shoe |
