2016-05-15 106 views
0

我有和this answer类似的情况。不过,我使用QML小部件中的属性。我成功注册我的枚举类(使用qmlRegisterUncreatableType),我可以做到以下几点:作为QML的C++类中的属性类型的枚举类型

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

不幸的是,当我把财产QML

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

那两个返回值没有可比性与彼此。如何从另一个类中定义的枚举类型的cpp中正确地创建一个属性并在QML中使用它?

+3

重复:http://stackoverflow.com/questions/20089196/how-to-access-c-enum-from-qml/20108038 –

回答

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 
+3

在QT5不使用Q_ENUMS有Q_ENUM代替 – tty6

+2

Qt 5.5及更高的准确值。 – astre

+0

@astre这是非常了解并为我工作。我曾问过如何在另一个类中定义枚举。我遇到这种情况的问题。 – user14416