[Qt-interest] qRegisterMetaType and namespaces

Girish Ramakrishnan girish at forwardbias.in
Fri Sep 4 07:16:17 CEST 2009


Hi Andre,
Have you tried
qRegisterMetaType<SelectionPolicyFlags>("SelectionPolicyFlags"); ?

Girish

Andre Somers wrote:
> 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