Из enum в QString

Автор: | 23 июля, 2019

Преобразование полей 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"