在开发中,需要将一些信息保存到本地,以便下次程序启动时使用。文件读写、数据库都是可以的。但是Qt提供了QSettings接口方法,将需要的信息写入或者读取配置文件中,其方法类似键值对。
QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。
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
保存配置名
void setValue(const QString &key, const QVariant &value);
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
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#
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();