无法遍历Qt枚举



我正在尝试遍历一个枚举。

    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);
        }
    }    

当我执行循环时,我应该能够看到我的枚举,其中name在x中,value在y中。

不幸的是,我只能看到第一个值,count总是1。

我看了这个问题,以找出上面的代码-但我注册了我的枚举,我的问题应该是一个不同的。Qt:没有元数据由元。enumeratorcount()枚举在Q_OBJECT,为什么?

我错过了什么

看起来像meta.enumeratorCount()将返回注册枚举的数量。在你的情况下,你只有一个。你想通过调用meta.enumerator(0)得到QMetaEnum对应的MyEnum。然后可以使用QMetaEnum::keyCountQMetaEnum::key列出枚举中的键。

相关内容

  • 没有找到相关文章

最新更新