Преобразование полей enum в QString
Для данного действия используем макрос Q_ENUM, который регистрирует перечисляемый тип в системе метаобъектов. Он должен быть помещен после объявления enum в класс, который имеет макрос Q_OBJECT. С типом доступа public. Перечисления, объявленные с помощью Q_ENUM, имеют свой QMetaEnum, зарегистрированный во включающем объекте QMetaObject. Можно использовать QMetaEnum :: fromType(), чтобы получить QMetaEnum.
Эта функция была введена в Qt 5.5.
Фрагмент кода:
Объявляем объединения.
enum Priority { High, Low, VeryHigh, VeryLow }; Q_ENUM (Priority)
Шаблон для получения строковых значений:
template<typename QEnum> QString QtEnumToString (const QEnum value) { return QString(QMetaEnum::fromType<QEnum>().valueToKey(value)); }
Способ применения:
QString test = QtEnumToString(Priority::High); qDebug() << test;
Будет выведена строковое значение:
"High"