如何将枚举类传递给qml?

时间:2017-02-28 18:50:59

标签: c++ qt enums qml

我有一个只有枚举类的.h文件。

somefile.h

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

正如您所看到的那样,没有Q_OBJECT或Q_GADGET。但我想在qml中访问这个类,如

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

当然我试图使用像 anotherclass.h

这样的东西
class Anotherclass : public QObject
{
    Q_OBJECT
    Q_ENUM (Someclass)
    ...
};

甚至

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

somewhere.cpp

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

这并不起作用。我无法访问somefile.h,但我真的想在qml中使用这个枚举。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

只使用Q_OBJECT派生类并在该类名称空间中声明你的枚举。

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

更多信息here