赞
踩
[section] // 节名
key = value //键 = 值
QSettings的API是基于Qvariant,它包含了大部分通常的Qt数据类型,比如QString,QRec,QImage,等等。
当创建一个Qsettings的对象时,需要传递给它两个参数,第一个是组织的名称,第二个是应用程序的名称。
更多关于QSettings
QSettings::NativeFormat 使用平台最合适的存储格式设置。在Windows中,使用系统注册表;OS X和iOS中,使用的是CFPreferences API;在Unix中,使用的是conf格式的文本配置文件
QSettings::IniFormat 存储在INI文件中的设置。
QSettings::InvalidFormat registerFormat()返回的值
QVariant value( const QString &key) const
获取键值
void setValueconst QString &key, const QString &value)
设置键值
QStringList allKeys() const
返回所有的key,以list形式
QString applicationName() const
返回应用程序名称
QString fileName() const
返回写入注册表地址,或ini文件路径
void beginGroup(const QString &prefix)
自动添加group到指定的key
void endGroup()
恢复group为在调用beginGroup之前的group
int beginReadArray(const QString &prefix);
向当前组添加前缀并从数组开始读取。返回数组的大小。
void beginWriteArray(const QString &prefix, int size = -1);
向当前组添加前缀并开始编写大小大小的数组。如果大小为-1(默认值),则根据条目的索引自动确定。
void remove(const QString &key);
清除key及其所对应的value
//settings.h
#pragma once #ifndef SETTING_H #define SETTING_H #include <QSettings> #include <QSharedPointer> #include <QTextCodec> #include <QCoreApplication> #include <QFile> class IniSettings { public: QSharedPointer<QSettings> m_iniFile; public: void settings_init(const QString &path); //初始化QSettings对象,并读取ini配置文件,如果不存在配置文件,则创建 void setValue(const QString §ion, const QString &key, const QString &value); //写入配置项(section:节点,key:键名,value:键值) void removeNode(const QString §ion); //移除节点(包括其中所有的键值) void removeKey(const QString §ion, const QString &key); //移除节点中的某个键值 QString getValue(const QString §ion, const QString &key, const QString &defaultValue); //读配置项 QStringList getValueList(const QString §ion, const QString &key, QString defaultValue = ""); //批量读取 }; #endif // SETTING_H
//settings.cpp
#include "settings.h" void IniSettings::settings_init(const QString &path) { /*QString fileName; fileName = QCoreApplication::applicationDirPath(); fileName += path;*/ m_iniFile = QSharedPointer<QSettings>(new QSettings(path, QSettings::IniFormat)); //确保中文能使用 //注意此处使用的编码取决于ini文件的编码格式,例如ini使用的是UTF-8则使用UTF-8 m_iniFile->setIniCodec(QTextCodec::codecForName("UTF-8")); /*QFile file(path); if (false == file.open(QIODevice::ReadOnly | QIODevice::Text)) { m_iniFile->beginGroup("section"); m_iniFile->setValue("status", "false"); m_iniFile->endGroup(); }*/ } void IniSettings::setValue(const QString §ion, const QString &key, const QString &value) { m_iniFile->beginGroup(section); // 设置节点名 m_iniFile->setValue(key, value); //设置键名和键值 m_iniFile->endGroup(); // 结束当前节的操作 } void IniSettings::removeNode(const QString §ion) { m_iniFile->remove(section); } void IniSettings::removeKey(const QString §ion, const QString &key) { /*QString path = QString("%1/%2").arg(section).arg(key); m_iniFile->remove(path);*/ m_iniFile->beginGroup(section); m_iniFile->remove(key); m_iniFile->endGroup(); } QString IniSettings::getValue(const QString §ion, const QString &key, const QString &defaultValue) { QString path = QString("%1/%2").arg(section).arg(key); QString result = m_iniFile->value(path, defaultValue).toString(); return result; } QStringList IniSettings::getValueList(const QString & section, const QString & key, QString defaultValue) { QVariant variant = m_iniFile->value(QString("%1/").arg(section) + key); QStringList list = variant.value<QStringList>(); return list; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。