[Qt-interest] qRegisterMetaType and namespaces

Andre Somers andre at familiesomers.nl
Wed Sep 2 11:20:45 CEST 2009


Hi,

I must be missing some simple...

I am working on a set of classes that have been wrapped in a namespace. 
Contained within this namespace is an enum type, that is then used with 
Q_DECLARE_FLAGS to create a nice set of flags. I am thus ending up with 
a SelectionPolicyFlags type.
One of the classes has Q_PROPERTY defined of that type. I know that in 
order to make this work, I need to call Q_DECLARE_METATYPE for this 
type, outside the namespace itself. That works. However, I also need to 
call qRegisterMetaType<SelectionPolicyFlags>() for them to be usefull in 
the Qt property system (and in queued signal/slots). It is there I am 
running in to a problem. While the registering itself seems to work (I 
have inserted a debug statement that outputs the type id that is 
assigned), actually using it in the property does not. When trying to 
access the property, I am getting the following output:

QMetaProperty::read: Unable to handle unregistered datatype 
'SelectionPropertyFlags' for property 
'PropertyEditor::PropertyEditor::selectionPolicy'.

Notice that there is a class PropertyEditor inside the namespace 
PropertyEditor.

I have made sure that the qRegisterMetaType is executed first by putting 
this in the header:

inline int init() {
   qDebug() << qRegisterMetaType<SelectionPolicyFlags>();
   return 0;
}
static int property_editor_init_dummy = init();

I am a bit lost here. How can I make use of my flags with the Qt 
Property system?

André




More information about the Qt-interest-old mailing list