On Monday, 24 February 2020 17:22:16 PST nus1998 wrote: > Hi, > > > I have a piece of code like this: > namespace FOO_NS { > class FOO_CLASS : public QObject > { > Q_OBJECT > public: > enum FOO_EM { EM_A, EM_B }; > > signals: > void trigger(FOO_EM foo); > } > } > the signals doesn't work obviously as enum doesn't be registered. if I add > Q_ENUM(FOO_EM) after the enum declaration, it doesn't work too. If I add > Q_NAMESPACE and Q_ENUM_NS(FOO_EM) before/after the enum declaration > respectively, some errors encounters like "'const QMetaObject > FOO_NS::FOO_CLASS::staticMetaObject' conflicts with a previous > declaration". now the only work way that I have tried is that using > qRegisterMetaType<FOO_NS::FOO_CLASS::FOO_EM>() to registered it, and change > "void trigger(FOO_EM foo)" to "void trigger(FOO_NS::FOO_CLASS::FOO_EM > foo)", which looks a bit ugly and I want to know is there more concise way > to achieve it.
If you want to use the old-style (text-based) connection, you must type the full classification of the enum: void trigger(FOO_NS::FOO_CLASS::FOO_EM); Ugly but required. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel System Software Products _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest