我可能在这里遗漏了一些明显的东西,但是当尝试将 Q_ENUM 暴露给 QML 时,即使在最简单的情况下,似乎也无法像 QT 文档(http://doc.qt.nokia.com/4.7 -snapshot/qtbinding.html#using-enumerations-of-a-custom-type)
我创建了一个简单的测试用例,我的 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”,结果为“未定义”
所以这意味着我不能做这样的测试:'if aVar.testVal == FirstValue'
(ReferenceError for the unqualified FirstValue)
或者像这样:('if aVar.testVal == aVar.FirstValue'
未定义aVar.FirstValue
)
以前有人经历过吗?它似乎与 QT 文档中提供的示例冲突,尽管在该示例中对象是从 QML 实例化的,所以这可能是原因。