列挙を反復しようとしています。
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);
}
}
ループをステップ実行すると、名前が x で値が y の列挙が表示されるはずです。
残念ながら、最初の値しか表示できず、count は常に 1 です。
上記のコードを理解するためにこの質問を調べましたが、列挙型を要求しましたが、問題は別のものである必要があります。 Qt: Q_OBJECT の enum の meta.enumeratorCount() によるメタデータがありません。なぜですか?
何が欠けていますか?