【发布时间】:2016-04-10 16:41:07
【问题描述】:
我想要做的只是将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::fromValue 函数构造一个qvariant:
QVariant var = QVariant::fromValue<EnumObject::DemoFlags>(EnumObject::SomeFlag2);
qDebug() << var;
调试输出显示:
QVariant(EnumObject::DemoFlags, )
那么,出于某种原因,QVariant 似乎无法存储标志?它确实识别类型,但似乎无法存储该值。我错过了什么?如果我注册一个枚举,一切正常。
注意:我知道我可以通过将其转换为整数并返回来存储该值,但这对我来说是不可能的,因为 QVariant 创建是泛型方法的一部分。
【问题讨论】:
标签: c++ qt qvariant enum-flags qmetatype