2013-10-22 2 views
1

빠른 참고 사항 : 다른 항목을 확인했으며 올바른 구문을 식별하지 못했습니다.QML의 Q_ENUM 액세스

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

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

이 클래스 PetStage QList 내에서 사용 PetTeam QList 내에서 사용된다. 두 개의 상위 클래스에는 열거 형이 없습니다. PetStage 객체 만이 QML로 전송되고 거기에서부터 QML 내에서 계층 구조를 인식하면서 다른 모든 객체에 액세스합니다.

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

제가하는 데 문제는 내가 QML에서 열거를 사용하려면 내가 그

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

기능이 제대로 그래서 QML에서 사용할 올바른 구문의 인식이다입니다.

+0

사용하여 거기에서 당신은 QMLscript

import PetStatus 1.0 

로 가져올 것이며, QML에서 호출을 생성하는 것입니다 코드가 잘못되어 제대로 작동하지 않아야합니다. "Q_OBJECT 또는 Q_GADGET 매크로가있는 클래스에서 열거 형 선언 뒤에 배치해야합니다." – Matteo

답변

2

솔루션은 문서에 따르면 다른 qmlRegisterType

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

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