[英]QFlags and 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::fromValue
函数构造一个qvariant:
QVariant var = QVariant::fromValue<EnumObject::DemoFlags>(EnumObject::SomeFlag2);
qDebug() << var;
调试输出显示:
QVariant(EnumObject::DemoFlags, )
那么,无论出于何种原因,QVariant似乎都无法存放旗帜? 它确实识别出类型,但似乎无法存储该值。 我错过了什么? 如果我注册枚举,一切正常。
注意:我确实知道我可以通过将值转换为整数和后面来存储该值,但这对我来说是不可能的,因为QVariant创建是泛型方法的一部分。
实际上它节省了。 但是qDebug()没有显示值。 可以看出是否从QVariant中提取了值:
EnumObject::DemoFlags val = var.value<EnumObject::DemoFlags>();
qDebug() << val;
得到:
QFlags<EnumObject::DemoFlags>(SomeFlag2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.