2

快速说明:我检查了其他主题,但无法识别正确的语法。

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

功能正常。

4

1 回答 1

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
于 2013-10-22T21:01:19.730 回答