首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSettings如何将QMap<QString、int>保存到配置文件中

问QSettings如何将QMap<QString、int>保存到配置文件中
EN

Stack Overflow用户
提问于 2011-07-31 16:32:30
回答 4查看 6.2K关注 0票数 5

在阅读了Save QList to QSettings之后,我正在尝试用QMap<QString,int>做同样的事情。我希望配置文件看起来像这样:

代码语言:javascript
复制
1111=1  
2222=3  
4444=0  

但是我得到了一个编译错误:

代码语言:javascript
复制
Q_DECLARE_METATYPE(QMap<QString,int>)

Warning C4002: too many actual parameters for macro 'Q_DECLARE_METATYPE'
ConfigSettings.h(5) : error C2976: 'QMap' : too few template arguments
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-31 17:26:15

您得到的错误消息是由预处理器不知道模板的事实引起的。因此,如果宏调用了两个参数- QMap<QString和int>,那么它就会解析这个宏调用,这没有任何意义。

要保存所需的数据,最好自己将其序列化到QSettings中。像这样写的东西:

代码语言:javascript
复制
settings.beginGroup("Whatever");
QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
     settings.setValue(i.key(), i.value());
     ++i;
 }
settings.endGroup();

要读取设置,请在childKeys()函数的帮助下使用相同的方法。

代码语言:javascript
复制
settings.beginGroup("Whatever");
QStringList keys = settings.childKeys();
foreach (QString key, keys) {
     map[key] = settings.value(key).toInt();
}
settings.endGroup();
票数 14
EN

Stack Overflow用户

发布于 2013-04-24 17:55:01

就像Mat说的,错误是由预处理器不理解模板引起的。但是,您可以通过一个简单的typedef轻松地解决这个问题。

代码语言:javascript
复制
typedef QMap<QString,int> QIntMap
Q_DECLARE_METATYPE(QIntMap)
票数 5
EN

Stack Overflow用户

发布于 2017-03-30 21:18:25

QSetting接受将QVariant类型传入setValue方法,因此这意味着您可以直接存储QMap<QString, QVarint>映射到设置

代码语言:javascript
复制
// Store
QMap<QString, QVariant> storeMap;
QMapIterator it(myMap);
// iterate through the map to save the values in your chosen format
while(it.hasNext())
{
    storeMap[it.key()] = QVariant(it.value());
    it.next();
}
settings.setValue("myKey", storeMap);

..
// Read
QMap<QString, QVariant> readMap = settings.value("myKey").toMap();
QMapIterator it(readMap);
while(it.hasNext())
{
    myMap[it.key()] = it.value().toInt();
    it.next();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6888375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档