2014-02-21 4 views
2

спасбросков:Восстановление QList <bool> из QSettings

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

процесс восстановления:

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

Но ToList() возвращает QList из QVariant и profilesEnabled является QList из BOOL.

Есть ли какой-либо элегантный способ его преобразования? (я мог перебирать QList из QVariant и конвертировать один за другим)

Update:

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

Что такое формат 'settings'? Невозможно сохранить это в файле, если вы используете 'QSettings :: IniFormat'. –

ответ

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(); 
} 
Смежные вопросы