How to use common enum in both C++ and qml.??



  • I have an enum in enumFile.h.
    I want to use it in signal-slot functions in a class, so i used qRegisterMetaType<enum>("enum") in constructor.
    I also want to use it in qml, for which i have to have a copy of that enum in class which i bind with qml and use Q_ENUM(enum) macro to make it visible in qml.

    so is there any method by which i can have a common enum in enum.h, and use it in signal-slot and also in qml files.?



  • Hey, did you find a solution?
    Thank you,
    Bill



  • I would also be interested in this solution.



  • hey CreMindES. Any expertise in the Q_DECLARE_METATYPE maybe to solve this issue, in conjonction with the qmlRegisterUncreatableType?

    I even tried to define a macro in an external file to declare my enum, and then simply put my macro like this:
    @MyClass: public QObject
    {
    Q_OBJECT
    Q_ENUMS(MyEnum)

    public:
    MACRO
    }

    and MACRO being defined in an external file.h like:
    #define MACRO
    enum MyEnum { A, B, C};
    @

    But even this does not work, I always get an undefined value in the QML when trying to use A, B or C

    Any more luck?
    Bill



  • So OK the moc does not preprocess my macro apparently, and therefore the Q_ENUMS does not know about MyEnum while the moc is preprocessing it. But what is the solution then?

    Bill


Log in to reply