【发布时间】:2014-05-15 11:02:54
【问题描述】:
我对枚举类、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");
但它没有帮助。也许您对我有其他建议/解决方案。谢谢!
【问题讨论】:
标签: c++11 qt5 qvariant qsettings enum-class