2016-04-10 8 views
0

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

ответ

0

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

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

qDebug() << val; 

Дает:

QFlags<EnumObject::DemoFlags>(SomeFlag2) 

 Смежные вопросы

  • Нет связанных вопросов^_^