保存:
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
答案 0 :(得分:2)
您的方法要求您实施流运算符,以便对您的自定义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();
}