一、概述
QSettings类是Qt框架中的一个重要类,它主要用于存储和访问应用程序的设置和配置。
二、QSettings的构造方式
1、基于组织名和程序名的构造方式(主要用于Windows注册表)
1、explicit QSettings(const QString &organization,const QString &application = QString(), QObject *parent = nullptr);2、 QSettings(Scope scope, const QString &organization,const QString &application = QString(), QObject *parent = nullptr);//QSettings会在Windows注册表中读写指定组织名和程序名设置
2、基于文件名和构造的构造方式(用于读取、写入ini配置)
QSettings(const QString &fileName, Format format, QObject *parent = nullptr);//QSettings会读写指定文件名和格式的配置文件
3、无参的构造方式
explicit QSettings(QObject *parent = nullptr);
三、QSettings的常用方法
1、setValue():用于设置配置项的值。可以存储各种类型的数据,如整数、字符串、布尔值等
settings.setValue("string", "hello world");settings.setValue("int", 24);settings.setValue("double", 10.34);settings.setValue("bool", true);QStringList stringList;stringList << "Item1" << "Item2" << "Item3";settings.setValue("stringListKey", stringList);
2、value():用于读取配置项的值。如果配置项不存在,则返回指定的默认值
QString loadedString = settings.value("stringKey").toString();int loadedInt = settings.value("intKey").toInt();double loadedDouble = settings.value("doubleKey").toDouble();bool loadedBool = settings.value("boolKey").toBool();QStringList loadedStringList = settings.value("stringListKey").toStringList();
3、beginGroup()和endGroup():用于开始和结束一个设置组。
settings.beginGroup("POLICY");
QString type1 = QString::fromUtf8(settings.value("type1").toString().toLatin1());
QString type2 = QString::fromUtf8(settings.value("type2").toString().toLatin1());
QString type3 = QString::fromUtf8(settings.value("type3").toString().toLatin1());
QString type4 = QString::fromUtf8(settings.value("type4").toString().toLatin1());
QString type5 = QString::fromUtf8(settings.value("type5").toString().toLatin1());
QString type6 = QString::fromUtf8(settings.value("type6").toString().toLatin1());
settings.endGroup();
4、sync():用于将内存中的设置同步到存储介质中
settings.setValue("Setting1", "Value1");
settings.sync();
// 强制立即写入
5、clear():用于清除所有配置项
settings.remove("ObsoleteSetting");
settings.clear();
// 删除所有设置
四、主要功能
1、存储设置:QSettings可以存储各种类型的数据,包括字符串、整数、布尔值等,这些数据通常用于保存应用程序的配置信息等。
QSettings settings(qcstr("ZH"), qcstr("APP"));m_appUniqueKey = QUuid::createUuid().toString(QUuid::Id128).toUtf8();settings.setValue(qcstr("AppUniqueKey"), QString::fromUtf8(m_appUniqueKey));
2、读取设置:QSettings能够方便地读取之前 存储的设置,使得应用程序可以在启动时恢复用户之前的状态或配置。
QString currentDir = QApplication::applicationDirPath();
QString systemPath = QString("%1/system.ini").arg(currentDir);
QSettings settings(systemPath,QSettings::IniFormat);
settings.setIniCodec(QTextCodec::codecForName("UTF-8"));
3、分组管理:QSettings支持使用组(group)来组织设置,这有助于更好地管理大量的配置信息。通过beginGroup()和endGroup()方法。
settings.beginGroup("POLICY");
QString type1 = QString::fromUtf8(settings.value("type1").toString().toLatin1());
QString type2 = QString::fromUtf8(settings.value("type2").toString().toLatin1());
QString type3 = QString::fromUtf8(settings.value("type3").toString().toLatin1());
QString type4 = QString::fromUtf8(settings.value("type4").toString().toLatin1());
QString type5 = QString::fromUtf8(settings.value("type5").toString().toLatin1());
QString type6 = QString::fromUtf8(settings.value("type6").toString().toLatin1());
settings.endGroup();