我遇到与this answer类似的情况。但是我在QML小部件中使用该属性。我成功地使用枚举注册我的课程(使用qmlRegisterUncreatableType
),我可以执行以下操作:
console.log(ClassB.A) // return me an integer
不幸的是,当我在QML中使用该属性时
console.log(myAObjfromCpp.test) // I get QVariant(ClassB::TestEnum)
这两个回报值无法相互比较。如何从另一个类中定义的枚举类型的cpp中正确创建属性并在QML中使用它?
答案 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