QT: QSettings 的学习——配置文件读取

目录

在QT中提供了QSettings类,简化了读写配置文件的过程。

settings.beginGroup()

重点,配置文件长这样

childKeys()


在QT中提供了QSettings类,简化了读写配置文件的过程。

settings.beginGroup()

在学习实现获取所有内置目录,看到代码是这样的:

QSettings settings(M_ConfigIniFile,QSettings::IniFormat);
settings.beginGroup("Directories");
auto childKeys = settings.childKeys();
QVariantMap revMap;
for(int i=0; i<childKeys.size(); ++i){
    auto cKey = childKeys.at(i);
    revMap.insert(cKey,settings.value(cKey));
}

对beginGroup()这个函数有些不太清楚,帮助文档里对beginGroup()是这样解释的:

看完感觉好像明白了,又好像没明白。

知道看到一篇知乎的介绍(QT学习之如何读写配置文件(QSettings) (zhihu.com)),才终于清楚了。原来是我没有明白配置文件的组成。

重点,配置文件长这样

  •  [ ]声明的就是一个Group,[ ]里的就是Group的名字
  • Group的内容以键值对的形式存储,等号左边是key,右边是value

在理解配置文件组成后,再回去看代码,就发现其实很好理解了。

beginGroup()是选择具体的Group名,进而对Group进行操作。

QSettings *settings = new QSettings("/home/qt_pro/Qsettings/QsettingsTest/setting.ini",QSettings::IniFormat);
    //Read
    settings->beginGroup("QT");
    QString LEARN_OBJECT = settings->value("LEARN_OBJECT","").toString();
    double VERSION = settings->value("QT_VERSION",-1).toDouble();
    qDebug()<<"LEARN_OBJECT="<<LEARN_OBJECT<<endl;
    qDebug()<<"QT_VERSION="<<VERSION<<endl;
    settings->endGroup();
    //Write
    settings->beginGroup("MAIN");
    settings->setValue("CSDN_TITLE","QingXun");
    settings->endGroup();

    settings->beginGroup("OTHER");
    settings->setValue("CSDN_DESCRIPTION","Share My Learning exprience");
    settings->endGroup();

childKeys()

 在QSettings里有一个函数可以获取顶层的所有keys,对有较多值得Group遍历十分方便。值得注意得是,在说明文档中也提到了。返回得时顶层得keys,像fridge的keys就不会被返回,因为不属于顶层(有点类似与嵌套),除非你进入fridge的Group然后调用childkeys才会返回fridge的keys。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值