从QSettings </bool>恢复QList <bool>

时间:2014-02-21 00:54:40

标签: c++ qt

保存:

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

1 个答案:

答案 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();
}