Qt 简述QSettings配置文件保存使用数据

前言

在开发中,需要将一些信息保存到本地,以便下次程序启动时使用。文件读写、数据库都是可以的。但是Qt提供了QSettings接口方法,将需要的信息写入或者读取配置文件中,其方法类似键值对。

QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。

QSettings使用

QSetting构造函数原型

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

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

QSettings::NativeFormat	 	使用平台最合适的存储格式设置。
QSettings::IniFormat	      	存储在INI文件中的设置。
QSettings::InvalidFormat	registerFormat()返回的值

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

QSettings::UserScope	     在一个位置存储特定于当前用户的设置(例如,用户的主目录) ,存储路径:$HOME/.config/ 。
QSettings::SystemScope	在一个全局位置存储设置,以便在相同机器上所有用户访问同一组的设置,存储路径:/etc/xdg/ 。

const QString & organization
保存配置名

setValue/getValue函数原型

    void setValue(const QString &key, const QVariant &value);
    QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;

保存数据 setValue()

1、QSettings::UserScope
关键代码

	 QSettings cfg(QSettings::IniFormat,QSettings::UserScope,"config");
	 cfg.setValue("name","kch");
	 cfg.setValue("age","18");

存储路径:$HOME/.config/

kch@kch:/home/kch# cat /home/kch/.config/config.ini 
[General]
age=18
name=kch
kch@kch:/home/kch# 

2、QSettings::SystemScope

关键代码

	 QSettings cfg(QSettings::IniFormat,QSettings::SystemScope,"config");
	 cfg.setValue("name","kch");
	 cfg.setValue("age","18");

存储路径:/etc/xdg/

root@kch:/home/kch/settings# cat /etc/xdg/config.ini 
[General]
age=20
name=root
root@kch:/home/kch/settings# 

获取数据getValue()

    QSettings cfg(QSettings::IniFormat,QSettings::UserScope,"config");
    QString name=cfg.value("name","null").toString();
    QString age=cfg.value("age","null").toString();
    QSettings cfg(QSettings::IniFormat,QSettings::SystemScope,"config");
    QString name=cfg.value("name","null").toString();
    QString age=cfg.value("age","null").toString();

你可能感兴趣的:(qt,qt)