Qt笔记 -- QSetting的使用

QSetting的构造函数原型:

QSettings::QSettings ( Format format,
					   Scope scope,
					   const QString & organization, 
					   const QString & application = QString(),
					   QObject * parent = 0 )

enum QSettings::Format

这个枚举类型指定QSettings所使用的存储格式。

常量描述
QSettings::NativeFormat0使用平台最合适的存储格式设置。在Windows中,使用系统注册表;OS X和iOS中,使用的是CFPreferences
QSettings::IniFormat1存储在INI文件中的设置。
QSettings::InvalidFormat16registerFormat()返回的值

Unix中,NativeFor​​mat和IniFormat意思是一样的,只是文件扩展名不同(NativeFor​​mat为.conf,IniFormat 为.ini)。

enum QSettings::Scope

该枚举指定设置是否用户特定或同一系统的所有用户共享。

常量描述
QSettings::UserScope0在一个位置存储特定于当前用户的设置(例如,用户的主目录)。
QSettings::SystemScope1在一个全局位置存储设置,以便在相同机器上所有用户访问同一组的设置。

void QSettings::setPath(Format format, Scope scope, const QString & path)

为给定格式和范围设置用来存储的路径。对于路径而言,该格式可以是自定义格式。

下表总结了默认值:

平台格式范围路径
WindowsIniFormat1.UserScope 2.SystemScope1.%APPDATA% 2.%COMMON_APPDATA%
UnixNativeFormat, IniFormat1.UserScope 2.SystemScope1.$HOME/.config 2./etc/xdg
Qt for Embedded LinuxNativeFormat, IniFormat1.UserScope 2.SystemScope1.$HOME/Settings 2./etc/xdg
OS X and iOSIniFormat1.UserScope 2.SystemScope1.$HOME/.config 2./etc/xdg

在Windows、OS X、ios中设置NativeFormat没有任何效果。

警告:此功能不会影响现有QSettings对象。

示例代码:

在window上,写ini配置文件:

#include <Qtcore/QSettings>

int main(int argc, char *argv[])
{
    QSettings setting("Info.ini", QSettings::IniFormat);
    // setting.clear(); // 会将文件中遗留的数据全部清空
    setting.beginGroup("UserInfo");
    setting.setValue("username", "admin");
    setting.setValue("password", "123456");
    setting.endGroup();
    return 0;
}

写的Info.ini文件的数据如下:
在这里插入图片描述

读ini文件示例代码:

#include <QtCore/QSettings>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <iostream>

int main(int argc, char *argv[])
{
    QSettings setting("Info.ini", QSettings::IniFormat);
    QStringList groups = setting.childGroups();
    for (int i = 0; i < groups.size(); ++i)
    {
        setting.beginGroup(groups[i]);
        std::cout << "[" << groups[i].toStdString() << "]\n";
        std::cout << "username=" << setting.value("username").toString().toStdString() << "\n";
        std::cout << "password=" << setting.value("password").toString().toStdString() << "\n";
        setting.endGroup();
    }
    return 0;
}

在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值