保存:
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();
}