Я мог бы упустить что-то очевидное здесь, но при попытке представить Q_ENUM для QML даже в самом простом случае, похоже, не работает, как показано в документах QT (http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html#using-enumerations-of-a-custom-type)
IЯ создал простой тестовый пример, мой класс C ++ выглядит следующим образом:
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();
};
Затем я регистрирую и внедряю экземпляр этого класса в QDeclartiveContext.
Когда я пытаюсь получить доступ к testValсвойство, оно возвращает целое число (в данном случае 1), а не строковое представление.Кроме того, с экземпляром, внедренным как 'aVar', если я пытаюсь получить доступ к 'aVar.FirstValue', результатом будет 'undefined'
Так что это означает, что я не могу выполнять тесты, такие как: 'if aVar.testVal == FirstValue'
(ReferenceError для неквалифицированного FirstValue)
Или вот так: 'if aVar.testVal == aVar.FirstValue'
(aVar.FirstValue
не определено)
Кто-нибудь сталкивался с этим раньше? Кажется, он конфликтует с примером, представленным в документации по QT, хотя в данном примере объект создается из QML, так что это может быть причиной ..