У меня проблема с классами enum, QVariants и классом QSettings. Есть значения класса enum, которые я хочу сохранить в 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
Поискав в Интернете, я обнаружил, что в классе отсутствуют подходящие операторы ‹‹ и >>. Но это не вариант для классов enum. Я даже пытался использовать
qRegisterMetaType<Foo>("Foo");
но это не помогло. Может быть, у вас есть другие предложения/решения для меня. Спасибо!