gpt4 book ai didi

c++11 - QSettings 中 QVariant 中的枚举类

转载 作者:行者123 更新时间:2023-12-04 20:42:58 25 4
gpt4 key购买 nike

我对枚举类、QVariants 和 QSettings 类有问题。我想将枚举类值存储在进入 QSettings 实例的 QVariant 中。所以,我的代码实际上是这样的:

enum class Foo
{
Bar1, Bar2
}
Q_ENUMS(Foo)
Q_DECLARE_METATYPE(Foo)

...

Foo value = Bar2;
QSettings settings;
settings.setValue(QString("Foo"), QVariant::fromValue(value));

此时在执行代码时,一个断言跳入并提示:
ASSERT failure in QVariant::save: "Invalid type to save", file kernel\qvariant.cpp

在互联网上搜索,我发现该类(class)缺少合适的 << and >> 运算符。但这不是枚举类的选项。我什至尝试使用
qRegisterMetaType<Foo>("Foo");

但它没有帮助。也许你对我有一些其他的建议/解决方案。谢谢!

最佳答案

被屏蔽无符号整数的枚举似乎是一个问题,请参阅

Qt4 QSettings save enumeration value (for example Qt::CheckState)

那里和可能在这里的解决方案是将其转换为无符号。要检查返回枚举的 static_cast-result 是否有效,您可以添加 Foo_lowestFoo_highest枚举范围的开头和结尾的值。

关于c++11 - QSettings 中 QVariant 中的枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840660/

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