2010-12-16 3 views
6

에 Qt의 Q_ENUMS을 노출하지만, QT를 워드 프로세서 (http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html#using-enumerations-of-a-custom-type)내가 분명 여기서 뭔가를 누락 될 수 있습니다 QML

같이 작동하지 않는 것 그때 &이 QDeclartiveContext에이 클래스의 인스턴스를 주입 등록

class MyClass : public QDeclarativeItem { 
    Q_OBJECT 
    Q_ENUMS(testType) 

public: 
    MyClass() : t(FirstValue) { } 
    enum testType { InvalidValue, FirstValue, SecondValue } ; 

    testType testVal() const { return t; } 
    Q_PROPERTY(testType testVal READ testVal NOTIFY testValChanged) 
private: 
    testType t; 

signals: 
    void testValChanged(); 
}; 

: 같은

나는 간단한 테스트 케이스를 만들었습니다, 내 C는 ++ 클래스 보인다.

testVal 속성에 액세스하려고하면 문자열 표현이 아닌 정수 (이 경우 1)가 반환됩니다. 또한 , I 시도하고, 그 결과가

그래서이 I 같이 테스트를 수행 할 수 없음을 의미 '미정의'는 액세스 'aVar.FirstValue'하면 'AVAR'로 주입 인스턴스 다음 용 'if aVar.testVal == FirstValue' (ReferenceError가 비정규 FirstValue)

또는 같은

: 'if aVar.testVal == aVar.FirstValue' ( aVar.FirstValue가 정의되어 있지 않습니다)

사람은 전에이 겪었? 이 예제에서는 QML에서 인스턴스가 생성되었지만 QT 문서에서 제공된 예제와 충돌하는 것 같습니다. 따라서이 문제가 원인 일 수 있습니다.

답변

16

열거 형 값은 "ElementName.EnumValue"로만 액세스 할 수 있습니다. "object.EnumValue". 따라서 첫 번째 값은 작동하지 않습니다. 대신 MyClass.FirstValue를 사용해야합니다 (이렇게하려면 qmlRegisterType()에 MyClass를 등록한 다음 등록 된 모듈을 가져와야합니다).

또한 열거 형 값은 정수 값으로 정의되므로 문자열로 반환되지 않습니다.

+0

아, 잡았다, 고마워. – aidanok

관련 문제