QFlags и QVariant

То, что я пытаюсь сделать, это просто сохранить QFlags в QVariant,

Определение флагов:

class EnumObject : public QObject
{
Q_OBJECT
public:
enum DemoFlag {
SomeFlag0 = 0x00,
SomeFlag1 = 0x01,
SomeFlag2 = 0x02
};
Q_DECLARE_FLAGS(DemoFlags, DemoFlag)
Q_FLAG(DemoFlags)
};

Теперь все, что я делаю, это строю qvariant, используя QVariant::fromValue функция:

QVariant var = QVariant::fromValue<EnumObject::DemoFlags>(EnumObject::SomeFlag2);
qDebug() << var;

Отладочный вывод показывает:

QVariant(EnumObject::DemoFlags, )

Итак, по какой причине QVariant не может хранить флаги? Он распознает тип, но, похоже, не может сохранить значение. Я что-то пропустил? Если я зарегистрирую перечисление, все будет работать нормально.

Замечания: Я знаю, что могу сохранить значение, приведя его к целому числу и обратно, но для меня это невозможно, поскольку создание QVariant является частью универсального метода.

1

Решение

На самом деле это экономит. Но значение для qDebug () не отображается. Можно увидеть, извлекается ли значение из QVariant:

EnumObject::DemoFlags val = var.value<EnumObject::DemoFlags>();

qDebug() << val;

дает:

QFlags<EnumObject::DemoFlags>(SomeFlag2)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]