// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef PROPERTYTESTER_H #define PROPERTYTESTER_H #include #include class PropertyTester : public QObject { Q_OBJECT signals: void xOldChanged(); void yOldChanged(); void xNotifiedChanged(); void yNotifiedChanged(); public: PropertyTester() = default; Q_PROPERTY(int xOld READ xOld WRITE setXOld NOTIFY xOldChanged) Q_PROPERTY(int yOld READ yOld WRITE setYOld NOTIFY yOldChanged) Q_PROPERTY(int x MEMBER x BINDABLE xBindable) Q_PROPERTY(int y MEMBER y BINDABLE yBindable) Q_PROPERTY(int xNotified MEMBER xNotified NOTIFY xNotifiedChanged BINDABLE xNotifiedBindable) Q_PROPERTY(int yNotified MEMBER yNotified NOTIFY yNotifiedChanged BINDABLE yNotifiedBindable) void setXOld(int i) { if (m_xOld != i) { m_xOld = i; emit xOldChanged(); } } void setYOld(int i) { if (m_yOld != i) { m_yOld = i; emit yOldChanged(); } } int xOld() { return m_xOld; } int yOld() { return m_yOld; } QProperty x; QProperty y; QBindable xBindable() { return QBindable(&x); } QBindable yBindable() { return QBindable(&y); } Q_OBJECT_BINDABLE_PROPERTY(PropertyTester, int, xNotified, &PropertyTester::xNotifiedChanged) Q_OBJECT_BINDABLE_PROPERTY(PropertyTester, int, yNotified, &PropertyTester::yNotifiedChanged) QBindable xNotifiedBindable() { return QBindable(&xNotified); } QBindable yNotifiedBindable() { return QBindable(&yNotified); } private: int m_xOld = 0; int m_yOld = 0; }; #endif // PROPERTYTESTER_H