ここで明らかな何かが欠けているかもしれませんが、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'
(未修飾の FirstValue の ReferenceError)
またはこのように: 'if aVar.testVal == aVar.FirstValue'
( aVar.FirstValue
is undefined)
誰もこれを経験したことがありますか?QTドキュメントで提供されている例と競合しているようですが、その例ではオブジェクトがQMLからインスタンス化されているため、これが原因である可能性があります..