一 、QSettings介绍:

用户通常希望应用程序记住其设置。在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中。QSettings有两种存储格式:QSettings::NativeFormat(在windows平台可读写注册表)、QSettings::IniFormat(读写ini文件)、QSettings::InvalidFormat

    QSettings使用户可以保存应用程序设置,并且支持用户自定义存储格式。QSetings API基于QVariant,因而你可以存储却大部分类型的数据。如果你需要一个非持久性的存储,推荐使用QMap<QString,QVariant>.

二、QSettings常用API:

  • 创建QSettings对象
  1. QSettings(const QString & organization, const QString & application = QString(), QObject * parent = 0)
    创建一个QSettings对象,必须传入应用程序名称,及公司名称。如果你的设置来自程序中不同的地方,你需要通过QCoreApplication::setOrganizationName() and QCoreApplication::setApplicationName()指定程序名称和公司名称,并且使用默认的构造函数QSettings settings。
    QCoreApplication::setOrganizationName("MySoft");
    QCoreApplication::setOrganizationDomain("mysoft.com");
    QCoreApplication::setApplicationName("Star Runner");
    ...
    QSettings settings;
  • 写入数据
  1. settings.setValue("editor/wrapMargin", 68);
     每一条信息包含一个key和一个value,value类型为QVariant。
  • 读取数据
  1. int margin = settings.value("editor/wrapMargin").toInt();
    如果key不存在,则返回 null QVariant(可以被转化为整数0)
    读取数据的时候,可以传递第二个参数,给定新的value:
  1. int margin = settings.value("editor/wrapMargin", 80).toInt();
  • 其他
    判断key是否存在: contains(const QString & key) const
    移除某项:remove(const QString & key)
    得到所有键:QStringList QSettings::allKeys() 

三、使用示例
  • 读写注册表

实例化对象时,设置存储格式为:QSettings::NativeFormat,利用'/'来填写要读写的注册表:

    
  1. QSetings settings(("HKEY_CURRENT_USER/", QSettings::NativeFormat);
  2. settings.setValue("regedit/test","green");//设置key-value键值对
  3. QString value = settings.value("regedit/test");//读取key对应的value
  • 读写ini文件
  1. #include <QApplication>
  2. #include <QSettings>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. QSettings settings("E:/QTProject/BLOG/Settings_test/test.ini", QSettings::IniFormat);
  7. settings.setValue("Student/name", "ChengKeKe");
  8. settings.setValue("Student/sex", "man");
  9. settings.setValue("Student/age", 24);
  10. settings.setValue("Address", "Xi'an");
  11. QString name = settings.value("Student/name").toString();
  12. QString sex = settings.value("Student/sex").toString();
  13. return a.exec();
  14. }
打开test.ini如图:

  注: 其中注意读取Value时,如果存储值为16进制,不能使用int QVariant::toInt(bool * ok = 0) const,结果将返回0;

QSettings 类的更多相关文章

  1. Qt的QSettings类和.ini文件读写

    Detailed Description QSettings类提供了持久的跨平台的应用程序设置.用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表 ...

  2. 【Qt】QSettings介绍【转】

    简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...

  3. QSettings介绍

    简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...

  4. 程序启动读取和关闭时保存应用程序设置(QSettings)

    保存应用程序设置(QSettings)1. QSettings 类 QSettings 提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等.在 Windo ...

  5. Qt随笔 - QSettings

    QSettings类提供了持久的跨平台应用程序设置. 嗯,一句话概括QSettings-- 创建 来看一下原型: QSettings::QSettings(const QString &org ...

  6. Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

    第一种INI配置文件 .ini 文件是Initialization File的缩写,即初始化文件. 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户 ...

  7. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  8. 【转载】PyQt QSetting保存设置

    转载地址: http://blog.sina.com.cn/s/blog_4b5039210100h3zb.html 用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位 ...

  9. QT读写ini配置文件

        /********下面是写ini文件*************************/     //Qt中使用QSettings类读写ini文件     //QSettings构造函数的第一 ...

随机推荐

  1. OpLogMergeMessage-OutOfMemoryError-JavaHeapSpace

    direct memory size netty or oplog 5.5kw * 20 60G worker/ 26G MaxDirectMemorySize 1/2 tasks per worke ...

  2. 汇编入门——使用DOSBox写一个HelloWorld以及相关软件安装

    0.0.0) 在D盘建立一个ASM文件夹 0.0.1) 放入所需要的文件 1所标示的红色框为必须要存在的文件,要处理汇编文件.百度网盘中下载. 2自己编写的汇编(asm)文件. 3编译汇编自己生成的文 ...

  3. 阿里云服务器Linux CentOS安装配置(11)安装Wordpress

    下载wordpress安装包 wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.zip unzip wordpress-4.8.1-zh_CN.z ...

  4. 创建zookeeper集群

    第一步:需要安装jdk环境. 第二步:把zookeeper的压缩包上传到服务器. 第三步:解压缩. 第四步:把zookeeper复制三份. [root@localhost ~]# mkdir /usr ...

  5. MYSQL转换编码的解决方法

    MYSQL转换编码的解决方法 一.在utf8的mysql下 得到中文‘游客’的gbk下的16进制编码 mysql> SELECT hex(CONVERT( '游客' USING gbk )); ...

  6. Oracle归档开启和更改

    运用 Xshell  客户端工具链接所在的  oracle  服务器 1.先进入数据库里面去 [root@DBSTANDBY ~]# su - oracle [oracle@DBSTANDBY ~]$ ...

  7. API认证&SDK&RESTful

    python API的安全认证   我们根据pid加客户端的时间戳进行加密md5(pid|时间戳)得到的单向加密串,与时间戳,或者其它字段的串的url给服务端. 服务端接收到请求的url进行分析 客户 ...

  8. Appium自动化测试之Appium的安装与配置

    Appium自动化测试- Appium环境的安装与配置Appium中文文档: https://github.com/appium/appium/tree/master/docs/cn Appium的安 ...

  9. 安装VC6.0安装步骤及心得体会

    一.安装步骤: 1.打开网站https://pan.baidu.com/s/nxee/AD ,输入提取密码:wdhk. 2.登录微信账号,将软件下载到D盘. 3.鼠标右键点击VC6.0快捷方式,选择“ ...

  10. UML用例关系一览