Что я пытаюсь сделать, так это просто хранить 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 является частью общего метода.