Enums 在QML中访问Q_枚举

Enums 在QML中访问Q_枚举,enums,qml,qt5,Enums,Qml,Qt5,快速提示:我检查了其他主题,无法识别正确的语法 class Pet : public QObject { Q_OBJECT Q_ENUMS(PetStatus) public: enum PetStatus { Stun, Rooted }; ... } qmlRegisterType<Pet>(); //In other class. 我遇到的问题是我想在QML中使用enum,但我不知道在QML中使用的语法是否正确,因此 console.log(

快速提示:我检查了其他主题,无法识别正确的语法

class Pet : public QObject
{
    Q_OBJECT
    Q_ENUMS(PetStatus)
public:
    enum PetStatus { Stun, Rooted };
    ...
}

qmlRegisterType<Pet>(); //In other class.
我遇到的问题是我想在QML中使用enum,但我不知道在QML中使用的语法是否正确,因此

console.log(X.Rooted) //prints 1; I thought Pet.Rooted would work but it does not

功能正确。

解决方案是创建另一个qmlRegisterType

qmlRegisterType<Pet>("PetStatus", 1, 0, "PetStatus");
并使用

PetStatus.Rooted //Or whatever naming convention you used for your elements

根据文档,您的代码是错误的,不能正常工作。“它必须放在具有Q_对象或Q_GADGET宏的类中的枚举声明之后。”
import PetStatus 1.0
PetStatus.Rooted //Or whatever naming convention you used for your elements