gpt4 book ai didi

c++ - QFlags 和 QVariant

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:49 31 4
gpt4 key购买 nike

我想做的是简单地将 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中提取了value:

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

qDebug() << val;

给予:

QFlags<EnumObject::DemoFlags>(SomeFlag2)

关于c++ - QFlags 和 QVariant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532527/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com