Qt Q_ENUM нужно поставить буквальное значение в QJsonValue - PullRequest
0 голосов
/ 02 мая 2020

У меня есть некоторые перечисления, значения которых нужно поместить в QJsonObject. Например, если вы работаете с логическим типом:

    QJsonObject jq;
    QVariant v;
    v = QVariant::fromValue(true);
    jq.insert ("bool",QJsonValue::fromVariant(QVariant::fromValue(v.value<bool>())));
    std::cout << (QJsonDocument(jq).toJson().toStdString());

, вывод:

{
    "bool": true
}

значение не является строкой - оно буквальное

Мне нужно то же самое для моих перечислений ...

class Enums {
    Q_GADGET
public:
    enum STATE{
        DELETED  = 1,
        NEW      = 2,
        APPROVED = 4,
        SOLVED   = 8,
        ERROR    = 16,
        PROCESS  = 32,
    };
    Q_ENUM(STATE)
};
Q_DECLARE_METATYPE(Enums::STATE)

и вывод

    QJsonObject jq;
    QVariant v;
    v = QVariant::fromValue(Enums::STATE::NEW);
    jq.insert ("Enums->STATE",QJsonValue::fromVariant(QVariant::fromValue(v.value<Enums::STATE>())));
    std::cout << (QJsonDocument(jq).toJson().toStdString());

составляет:

{
    "Enums->STATE": "NEW"
}

но мне нужно:

{
    "Enums->STATE": NEW
}

Пожалуйста, помогите!

...