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
列出枚举中的键