在QML中访问Q_ENUM

时间:2013-10-22 18:15:12

标签: enums qml qt5

快速注意:我已检查过其他主题,但无法确定正确的语法。

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

qmlRegisterType<Pet>(); //In other class.

此类用于PetTeam中的QList,用于PetStage中的QList。两个更高级别没有枚举。 PetStage对象单独发送到QML,从那里可以从QML中访问其他所有内容,因为它知道层次结构。

petStage.team[1].pet[2].name //Works in QML

我遇到的问题是我想在QML中使用枚举,我不知道在QML中使用正确的语法,以便

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

正常运作。

1 个答案:

答案 0 :(得分:2)

解决方案是创建另一个qmlRegisterType

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

从那里你将导入到QMLscript

import PetStatus 1.0

使用

从QML调用它
PetStatus.Rooted //Or whatever naming convention you used for your elements