Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何仅将枚举类传递给qml?_C++_Qt_Enums_Qml - Fatal编程技术网

C++ 如何仅将枚举类传递给qml?

C++ 如何仅将枚举类传递给qml?,c++,qt,enums,qml,C++,Qt,Enums,Qml,我有一个只有enum类的.h文件 somefile.h enum class Someclass { a = 0, b = 3, // ... z = 100 }; class Anotherclass : public QObject { Q_OBJECT Q_ENUM (Someclass) ... }; 正如您所看到的,周围没有Q_对象或Q_小工具。但是我想在qml中访问这个类,就像 ... property var someProperty: Someclas

我有一个只有enum类的.h文件

somefile.h

enum class Someclass {
a = 0,
b = 3,
// ...
z = 100
};
class Anotherclass : public QObject
{
    Q_OBJECT
    Q_ENUM (Someclass)
    ...
};
正如您所看到的,周围没有Q_对象或Q_小工具。但是我想在qml中访问这个类,就像

...
property var someProperty: Someclass.a
...
当然,我试着使用另一个类

enum class Someclass {
a = 0,
b = 3,
// ...
z = 100
};
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");
...
。。。
qmlRegisterUncreatableType(“somepackage”,1,0,“somepackage仅用于获取枚举”);
...

这不管用。我没有访问somefile.h的权限,但我确实希望在qml中使用此枚举。有什么方法可以做到这一点吗?

只需使用Q_对象派生类并在该类命名空间中声明枚举即可

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

更多信息

可能与否重复,但不是。我有不同的情况,因为enum类不在QObject类中。我不能这样做,因为无法访问.h文件。即使是NewSomeClass中的枚举的副本也帮不上我的忙。