c++classnamemetaobject

Why does staticMetaObject.className() return the class name of the parent class?


I have a class 'Default' derived from a class 'Units' and when I do:

Default::staticMetaObject.className())

it returns Units instead of Default. Why is that? How can I fix this?


Solution

  • Turning my comment into an answer.

    This usually happens when you forget to put the macro Q_OBJECT into the derived class.

    From the point of view of Qt's meta-type system, that class is then indistinguishable from its parent class (that is, from the nearest parent class which does have Q_OBJECT inside).