#ifndef EMENUTAB_H #define EMENUTAB_H #include #include class EMenuTab : public QObject { Q_OBJECT private: //Private constructor prevent the enumeration class from being instantiated explicit EMenuTab(QObject* parent = nullptr); public: enum eMenuTab : quint8 { EMPTY_TAB, B_TAB, M_TAB, C_TAB, PW_TAB, PD_TAB, CINE_TAB, TGC_TAB }; Q_ENUM(eMenuTab) static int qtEnumToInt(const eMenuTab qtEnum) { return QMetaEnum::fromType().value(qtEnum); } static QString qtEnumToString(const eMenuTab qtEnum) { return QString(QMetaEnum::fromType().valueToKey(qtEnum)); } static eMenuTab qtStringToEnum(const QString stringEnum) { auto e = QMetaEnum::fromType(); for(int i = 0; i < e.keyCount(); i++) { const char* name = e.key(i); if(QString(name) == stringEnum) { return static_cast(e.value(i)); } } } }; Q_DECLARE_METATYPE(EMenuTab::eMenuTab); #endif //EMENUTAB_H