Details
-
Suggestion
-
Resolution: Done
-
P1: Critical
-
5.0.0
-
None
-
37cd29b2ff024f27f84ef6214ff5403603d522f2
Description
Currently QML only supports enums as signal and method parameters if they are declared in the same class as the signal or method. This is a limitation inherited from QMetaObject, that doesn't allow QML to determine if the parameter type is an enum, or just some other random type.
The ideal solution would be to extend Q_ENUMS() to support "registering" an enum from another class. For example:
class Foo : public QObject { Q_ENUMS(Bar::CustomEnum); slots: void myMethod(Bar::CustomEnum); };
in this case, all QML really needs is for the Bar::staticMetaObject to appear in the Foo::staticMetaObject's extra data list.
Attachments
For Gerrit Dashboard: QTBUG-20639 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
9746,1 | Add support to moc for registering non-local enums via Q_ENUMS. | master | qt/qtbase | Status: MERGED | +2 | 0 |
9748,13 | Support (registered) non-local enums for signal/slot params in QML. | master | qt/qtdeclarative | Status: MERGED | +2 | 0 |