enum クラス、QVariants、および QSettings クラスに問題があります。QSettings インスタンスに入る QVariant 内に格納したい enum クラス値があります。したがって、私のコードは実際には次のようになります。
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");
しかし、それは役に立ちませんでした。他の提案/解決策があるかもしれません。ありがとう!