2017-02-28 68 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中的枚举重复也不会帮助我。 –

相关问题