枚举类型作为QML的C ++类中的属性类型

时间:2016-05-15 20:01:49

标签: c++ qt enums qml

我遇到与this answer类似的情况。但是我在QML小部件中使用该属性。我成功地使用枚举注册我的课程(使用qmlRegisterUncreatableType),我可以执行以下操作:

console.log(ClassB.A) // return me an integer

不幸的是,当我在QML中使用该属性时

console.log(myAObjfromCpp.test) // I get QVariant(ClassB::TestEnum)

这两个回报值无法相互比较。如何从另一个类中定义的枚举类型的cpp中正确创建属性并在QML中使用它?

1 个答案:

答案 0 :(得分:1)

文档here中对此进行了解释。

根据它你需要使用Q_ENUMS声明它。 例如:

//C++ code
Q_ENUMS(Status)
Q_PROPERTY(Status status READ status NOTIFY statusChanged)

enum Status {
    Ready,
    Loading,
    Error
};

//QML code
console.log(Message.Ready) //Message being the class in which enum is defined