Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
5.12.9, 5.14.2, 5.15.7
Description
MyType for QML
class MyType3 : public QQmlPropertyMap { Q_OBJECT public: MyType3() : QQmlPropertyMap(this, nullptr) { insert("a", 1); insert("b", 2); } Q_INVOKABLE void func(QString s) { qDebug() << this << "MyType3::func(QString) called!" << s; } Q_INVOKABLE void func(int i) { qDebug() << this << "MyType3::func(int) called!" << i; } Q_INVOKABLE void func() { qDebug() << this << "MyType3::func() called!"; } Q_INVOKABLE void call(const QString &funcName, const QVariant &v0 = QVariant(), const QVariant &v1 = QVariant(), const QVariant &v2 = QVariant(), const QVariant &v3 = QVariant(), const QVariant &v4 = QVariant(), const QVariant &v5 = QVariant(), const QVariant &v6 = QVariant(), const QVariant &v7 = QVariant(), const QVariant &v8 = QVariant(), const QVariant &v9 = QVariant()) { qDebug() << this << "MyType3::call" << funcName << v0 << v1 << v2 << v3 << v4 << v5 << v6 << v7 << v8 << v9; } };
Calls in QML
MyObj3.func("hehe"); MyObj3.func(1); MyObj3.func(4.5); MyObj3.call("doSomething", "haha", 1, 2.3) MyObj3.call("doSomething", "haha", 1, 2.3, 4.56, 78, "bye")prints
prints
MyType3(0x6ffe00) MyType3::func() called! MyType3(0x6ffe00) MyType3::func() called! MyType3(0x6ffe00) MyType3::func() called! MyType3(0x6ffe00) MyType3::call "doSomething" QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) MyType3(0x6ffe00) MyType3::call "doSomething" QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid
For the class not derived from QQMLPropertyMap, matches fine.
MyType1(0x6ffe10) MyType1::func(QString) called! "hehe" MyType1(0x6ffe10) MyType1::func(int) called! 1 MyType1(0x6ffe10) MyType1::func(int) called! 4 MyType1(0x6ffe10) MyType1::call "doSomething" QVariant(QString, "haha") QVariant(int, 1) QVariant(double, 2.3) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) MyType1(0x6ffe10) MyType1::call "doSomething" QVariant(QString, "haha") QVariant(int, 1) QVariant(double, 2.3) QVariant(double, 4.56) QVariant(int, 78) QVariant(QString, "bye") QVariant(Invalid) QVariant(Invalid) QVariant(Invalid) QVariant(Invalid)
I guess the Javascript engine is not doing matches in methods of superClass metaObject for override functions. The problems may be related with the file qv4qobjectwrapper.cpp, function callInternal.