Есть вариант обойти все перечисления, если они объявлены так:
C++ (Qt)
lass MyClass : public QObject
{
Q_OBJECT
Q_PROPERTY(Priority priority READ priority WRITE setPriority)
Q_ENUMS(Priority)
public:
MyClass(QObject *parent = 0);
~MyClass();
enum Priority { High, Low, VeryHigh, VeryLow };
void setPriority(Priority priority);
Priority priority() const;
};
Обходишь примерно вот так:
C++ (Qt)
QObject *object = ...
const QMetaObject *metaobject = object->metaObject();
int count = metaobject->enumeratorCount ();
for (int i=0; i<count; ++i) {
QMetaEnum metaenum = metaobject->enumerator(i);
const char *name = metaenum.name();
...
}
Но enum должен быть объявлен внутри класса наследованного от QObject'a