diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2024-02-21 17:11:50 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-02-26 14:50:06 +0100 |
commit | e3f593da8e97fd28c887d4e26d22f9417f82a13e (patch) | |
tree | fce6c6e1ead6c26dcf91b7a80b728915d4bf259f /tests/auto/qml/qqmlproperty | |
parent | 3d4c61f0759605069db1d946668ef696dfb7eb98 (diff) |
QtQml: Re-allow change signals in QQmlProperty
Amends commit a1ce0596e517e84913b14ab23422137c95b8c785.
Pick-to: 6.7
Task-number: QTBUG-109548
Change-Id: I476c1798bb9a125264375e6fb0829e1357d99770
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/qml/qqmlproperty')
-rw-r--r-- | tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp index 05802a88d5..23f198bb78 100644 --- a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp +++ b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp @@ -30,8 +30,15 @@ class MyQmlObject : public QObject { Q_OBJECT Q_PROPERTY(QPoint pointProperty MEMBER m_point) + Q_PROPERTY(QString a READ objectName NOTIFY somethingHappened) + Q_PROPERTY(QString b READ objectName NOTIFY somethingHappened) public: - MyQmlObject(QObject *parent = nullptr) : QObject(parent) {} + MyQmlObject(QObject *parent = nullptr) : QObject(parent) { + connect(this, &QObject::objectNameChanged, this, &MyQmlObject::somethingHappened); + } + +signals: + void somethingHappened(); private: QPoint m_point; @@ -2424,9 +2431,13 @@ void tst_qqmlproperty::initFlags_data() const QString names[] = { QStringLiteral("foo"), + QStringLiteral("aChanged"), QStringLiteral("self.foo"), + QStringLiteral("self.aChanged"), QStringLiteral("onFoo"), + QStringLiteral("onAChanged"), QStringLiteral("self.onFoo"), + QStringLiteral("self.onAChanged"), QStringLiteral("bar"), QStringLiteral("self.bar"), QStringLiteral("abar"), @@ -2461,15 +2472,15 @@ void tst_qqmlproperty::initFlags() QQmlEngine engine; QQmlComponent c(&engine); c.setData(R"( - import QtQml - QtObject { + import Test + MyQmlObject { id: self signal foo() property int bar: 12 property alias abar: self.bar } )", QUrl()); - QVERIFY(c.isReady()); + QVERIFY2(c.isReady(), qPrintable(c.errorString())); QScopedPointer<QObject> o(c.create()); QVERIFY(!o.isNull()); @@ -2479,7 +2490,9 @@ void tst_qqmlproperty::initFlags() passObject ? o.data() : nullptr, name, context, flags); const bool usesId = name.startsWith(QStringLiteral("self.")); - const bool hasSignal = name.endsWith(QStringLiteral("foo")); + const bool hasSignal = name.endsWith(QStringLiteral("foo")) + || name.endsWith(QStringLiteral("aChanged")); + if (!passObject && !usesId) { QVERIFY(!property.isValid()); } else if (passObject && usesId) { @@ -2494,10 +2507,14 @@ void tst_qqmlproperty::initFlags() QVERIFY(property.isProperty()); QCOMPARE(property.name(), usesId ? name.mid(strlen("self.")) : name); QCOMPARE(property.propertyMetaType(), QMetaType::fromType<int>()); - } else { + } else if (name.endsWith(QStringLiteral("oo"))) { // 'onFoo' or 'foo' QVERIFY(property.isSignalProperty()); QCOMPARE(property.name(), QStringLiteral("onFoo")); QVERIFY(!property.propertyMetaType().isValid()); + } else { + QVERIFY(property.isSignalProperty()); + QCOMPARE(property.name(), QStringLiteral("onSomethingHappened")); + QVERIFY(!property.propertyMetaType().isValid()); } } |