Здравствуйте. Я хочу считывать из реестра QMap произвольных (в частности QString и QStringList) типов, только что-то не могу сообразить как это правильно записать. Хотел сделать так, чтоб тип в шаблон подставлялся динамически. Смотрел на QVariant, QMetaType - не понял как их применить.
Вот так как-то неправильно выглядит:
C++ (Qt)
template<typename T>
QMap<QString, T> loadMap(const QString ®istryValue, T mapValueType)
{
QMap<QString, QVariant> loadedMap = QSettings().value(registryValue).toMap();
QMap<QString, T> map;
foreach(QString key, loadedMap.keys())
map.insert(key, loadedMap.value(key).toString()); // тут ещё и написал неправильно
return map;
}
Сохранение в реестр пишется легко:
C++ (Qt)
template<typename T>
void saveMap(const QString ®istryValue, const QMap<QString, T> &map)
{
QMap<QString, QVariant> mapToSave;
foreach(QString key, map.keys())
mapToSave.insert(key, map.value(key));
QSettings().setValue(registryValue, mapToSave);
}