Qt own enum in class
c++, enums, qt, signals-slots
Solution
You have to do:
`Q_DECLARE_METATYPE(ClassA::MyEnum)`
in your classA.h header.
Then in ClassA constructor (or main() but remember to include classa.h there first):
`qRegisterMetaType<ClassA::MyEnum>("ClassA::MyEnum");`
Then use like:
`connect(whatever, SIGNAL(whatever_uses_myenum(ClassA::MyEnum)), ..., ...)`
Problem
I want to declare my own enum in a class in Qt and use it for signals and slots, but I get this error. ``` QObject::connect: Cannot queue arguments of type 'ClassA::MyEnum' (Make sure 'ClassA::MyEnum' is registered using qRegisterMetaType().) ``` This is my source code: ClassA.h ``` public: enum MyEnum { READING = 0, STOPPED = 1, FINISHED = 2 }; signals: void changed(QString text, int readTextInPercent, ClassA::MyEnum status); ``` ClassA.cpp ``` emit changed(QString("string"), 50, ClassA::READING); ``` ClassB.h ``` public slots: void changed(QString text, int readTextInPercent, ClassA::MyEnum status); ``` ClassB.cpp ``` this->connect(m_ClassA, SIGNAL(changed(QString, int, ClassA::MyEnum)), this, SLOT(changed(QString, int, ClassA::MyEnum))); void ClassB::changed(QString text, int readTextInPercent, ClassA::MyEnum status) { } ``` I don't know where and with which parameter I have to put the `qRegisterMetaType`.