[Development] [QML]: Register global enums/flags to QML ?

BogDan Vatra bogdan at kdab.com
Tue Jul 26 17:18:48 CEST 2016


I'd like to be able to register some "global" enums/flags to QML. I checked a 
little bit how Qt does with all the enums from Qt namespace (qnamespace.h) and 
I end-up in qqmlbuiltinfunctions which does all the "magic" which can't be 
used by normal developers/libs.

Because I think having "global" enums is a very nice feature, I'd like to know 
if other people and QML maintainers agree with me :). 
If yes, then want to propose the followings:
 - add one more Q_OBJECT/Q_GADGET like macro for namespaces (Q_NAMESPACE?), 
which declares the mandatory "extern const QMetaObject staticMetaObject" ( or 
just "extern const QMetaEnum  staticMetaEnum" ? because in principle we'll 
only be able to declare enums/flags ?) into that namespace. Most probably moc 
will need some love to properly handle the new Q_magic_macro. If is too much 
trouble we can use the qnamespace.h hack.

 - add a helper macro/function to register the namespace enums/flags (i.e. 
qmlRegisterNamespace or even better qmlRegisterEnums(const QMetaEnum 
&staticMetaEnum, ....). 

I think it depends on QML c++11 scoped enums task, because most probably the 
enums enumerators names will clash.


More information about the Development mailing list