2017-02-28 10 views
0

私はenumクラスのみの.hファイルを持っています。enumクラスをqmlに渡すには?

somefile.h

enum class Someclass { 
a = 0, 
b = 3, 
// ... 
z = 100 
}; 

あなたは何Q_OBJECTのかQ_GADGETの周りにはありません見ることができるように。しかし、私は勿論、私はどこかanotherclass.h

class Anotherclass : public QObject 
{ 
    Q_OBJECT 
    Q_ENUM (Someclass) 
    ... 
}; 

あるいは

class Anotherclass : public QObject 
{ 
    Q_OBJECT 
public: 
    typedef Someclass Myclass; 
    Q_ENUM (Myclass) 
    ... 
}; 

のようなものを使用しようとした

... 
property var someProperty: Someclass.a 
... 

ようQMLで、このクラスへのアクセスを取得したいです.cpp

... 
qmlRegisterUncreatableType<Anotherclass> ("somepackage", 1, 0, "somepackage is used only for getting enum"); 
... 

これは機能しません。私はsomefile.hへのアクセス権がありませんが、qmlにこのenumを実際に入れたいと思っています。それを行う方法はありますか?

+2

可能な複製[QMLに列挙クラスに合格するには?](http://stackoverflow.com/questions/37415542/how-to-pass-enum-class-to -qml) – folibis

+0

いいえ、そうではありません。私はenumクラスがQObjectクラスにないので、別の状況があります。 –

答えて

0

Q_OBJECT派生クラスを使用し、そのクラスの名前空間であなたの列挙型を宣言するだけです。

class SomeClass: public QObject 
{ 
    Q_OBJECT 
    enum SomeEnum { 
    a = 0, 
    b = 3, 
    z = 100 
    }; 
    Q_ENUM(SomeEnum) 
}; 

詳細here

+0

.hファイルにアクセスできないので、私はそうすることはできません。 NewSomeClassのenumの複製でさえ私を助けません。 –

関連する問題