保存:

settings.setValue("profilesEnabled", QVariant::fromValue< QList<bool> >(profilesEnabled));

恢复:
profilesEnabled = settings.value("profilesEnabled").toList()); //error

但是toList()会返回QVariant的QList,而profilesEnabled是bool的QList。

有什么优雅的方法可以转换它吗?
(我可以遍历QVariant的QList并逐一转换)

更新:
QVariant var = QVariant::fromValue< QList< bool > >(profilesEnabled);
settings.setValue("profilesEnabled", var);

第二行使运行时崩溃:
QVariant::save: unable to save type 'QList<bool>' (type id: 1031).

ASSERT failure in QVariant::save: "Invalid type to save", file kernel\qvariant.cpp, line 1966

最佳答案

您的方法需要实现流运算符,以使自定义QVariant类型的序列化成为可能。我建议改为将您的数据转换为QVariantList

保存:

QVariantList profilesEnabledVariant;
foreach(bool v, profilesEnabled) {
  profilesEnabledVariant << v;
}
settings.setValue("profilesEnabled", profilesEnabledVariant);

正在加载:
profilesEnabled.clear();
foreach(QVariant v, settings.value("profilesEnabled").toList()) {
  profilesEnabled << v.toBool();
}

10-02 19:19