我要做的就是简单地将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函数构造一个q变量:
QVariant var = QVariant::fromValue<EnumObject::DemoFlags>(EnumObject::SomeFlag2);
qDebug() << var;调试输出显示:
QVariant(EnumObject::DemoFlags, )因此,无论出于什么原因,QVariant似乎无法存储这些标志?它确实识别类型,但似乎无法存储该值。我错过了什么吗?如果我注册了一个枚举,一切都很好。
注意:--我确实知道,我可以通过将其转换到一个交织器并返回来存储这个值,但这对我来说是不可能的,因为QVariant创建是一个通用方法的一部分。
发布于 2016-07-06 10:10:37
实际上它节省了。但是qDebug()没有显示值。如果从QVariant中提取值,则可以看出:
EnumObject::DemoFlags val = var.value<EnumObject::DemoFlags>();
qDebug() << val;给予:
QFlags<EnumObject::DemoFlags>(SomeFlag2)https://stackoverflow.com/questions/36532527
复制相似问题