2017-02-28 75 views
0

我有一個只有enum類的.h文件。如何將一個枚舉類傳遞給qml?

somefile.h

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

正如你可以看到有沒有Q_OBJECT的或Q_GADGET的周圍。但我想訪問這個類QML像

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

Ofcourse我試圖用類似anotherclass.h

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

甚至

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

某處.cpp

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

這不起作用。我沒有訪問somefile.h,但我真的想在qml中有這個枚舉。有什麼辦法可以做到嗎?

+2

的可能的複製[如何枚舉類傳遞給QML?](http://stackoverflow.com/questions/37415542/how-to-pass-enum-class-to -qml) – folibis

+0

不,它不是。我有不同的情況,因爲枚舉類不在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中的枚舉重複也不會幫助我。 –

相關問題