С равнинными перечислениями я был в состоянии получить доступ Q_ENUMS свойства и специфический характер represenation из перечислений, с помощью следующего кода:QMetaEnum и сильные типизированное перечисление
// in .h
class EnumClass : public QObject
{
Q_OBJECT
public:
enum MyEnumType { TypeA, TypeB };
Q_ENUMS(MyEnumType)
private:
MyEnumType m_type;
};
// in .cpp
m_type = TypeA;
...
const QMetaObject &mo = EnumClass::staticMetaObject;
int index = mo.indexOfEnumerator("MyEnumType");
QMetaEnum metaEnum = mo.enumerator(index);
QString enumString = metaEnum.valueToKey(m_type); // contains "TypeA"
Если я хочу использовать C++ 11 для функции сильные типизированных перечислений как
enum class MyEnumType { TypeA, TypeB };
доступа к метаинформации больше не работает. Я полагаю, что Qt больше не распознает его как перечисление.
Есть ли какое-либо решение для доступа к представлению символа перечисления символов при использовании сильных типизированных перечислений?
Какие Qt версии вы используете? – SingerOfTheFall
@SingerOfTheFall: мы используем еще qt4.8, но будем переключаться на qt5 всякий раз, когда мы находим время для этого. – agentsmith
Я не уверен, конечно, но это может быть из-за вашей версии Qt. Кроме того, проверьте http://stackoverflow.com/questions/6513736/qt-support-for-c0x-enum-class – SingerOfTheFall