C++ 无法迭代Qt枚举

C++ 无法迭代Qt枚举,c++,qt,enumeration,qgadget,C++,Qt,Enumeration,Qgadget,我正在尝试迭代枚举 class MyEnumClass : public QObject { Q_GADGET Q_ENUMS(MyEnum) public: enum MyEnum { a, b, c }; MyEnumClass(QObject *parent = 0){} }; void listAllItems()

我正在尝试迭代枚举

    class MyEnumClass : public QObject
    {
        Q_GADGET
        Q_ENUMS(MyEnum)

    public:
        enum MyEnum
        {
            a, b, c
        };

        MyEnumClass(QObject *parent = 0){}
    };

    void listAllItems()
    {    
        QMetaObject meta = MyEnumClass::staticMetaObject;
        int count =  meta.enumeratorCount();
        for (int i=0; i < count; ++i)
        {
           QMetaEnum m = meta.enumerator(i);
           QString x;
           MyEnumClass::MyEnum y;
           x = m.valueToKey(i);
           y = (MyEnumClass::MyEnum)m.value(i);
        }
    }    
classmyenumclass:publicqobject
{
Q_小工具
Q_枚举(MyEnum)
公众:
髓鞘
{
a、 b,c
};
MyEnumClass(QObject*parent=0){}
};
void listalItems()
{    
QMetaObject meta=MyEnumClass::staticMetaObject;
int count=meta.enumeratorCount();
对于(int i=0;i
当我逐步完成循环时,我应该能够看到我的枚举,名称在x中,值在y中

不幸的是,我只能看到第一个值,count始终为1

我看了这个问题来找出上面的代码-但我确实重新注册了我的枚举,我的问题应该是另一个。


我缺少什么?

在我看来像是
meta。enumeratorCount()
将返回已注册的枚举数。在你的情况下,你只有一个。您希望通过调用
meta.enumerator(0)
来获取与
MyEnum
对应的值。然后可以使用
QMetaEnum::keyCount
QMetaEnum::key
列出枚举中的键