我对枚举类、QVariants 和 QSettings 类有疑问。我想将枚举类值存储在 QVariant 中,该 QVariant 进入 QSettings 实例。所以,我的代码实际上看起来像这样:
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
在互联网上搜索,我发现该类缺少合适的 << 和 >> 运算符。但这不是枚举类的选择。我什至尝试使用
qRegisterMetaType<Foo>("Foo");
但它没有帮助。也许您对我有其他建议/解决方案。谢谢!