一 、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. swust oj 984

    利用二叉树中序及先序遍历确定该二叉树的后序序列 1000(ms) 10000(kb) 2754 / 5599 已知二叉树的中序和先序遍历可以唯一确定后序遍历.已知中序和后序遍历可以唯一确定先序遍历,但 ...

  2. C++中的常量函数

    (1)常量成员函数不修改对象. (2)常量成员函数在定义和声明中都需要加上 const; (3)非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外. (4)常量(cosnt对象)对象不能调 ...

  3. DevExpress GridControl复合表头(多行表头)设置

    关于DevExpress.XtraGrid的复合表头或多行表头的示例,界面如下图所示 1.首先要把DevExpress的GridControl转换为BandedGridView 2.设置显示列及绑定的 ...

  4. 20175320 2018-2019-2 《Java程序设计》第9周学习总结

    20175320 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 本周学习了教材的第十一章的内容,在这章中介绍了JDBC与Mysql数据库,通过本章我了解到了 ...

  5. spring cloud

    如果是一个大型的网站,内部子系统较多.接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销:其次就是RPC框架一般都有注册 ...

  6. oo第四次总结

    1.论述测试与正确性论证的效果差异,比较其优缺点 测试:通过大量测试样例覆盖测试代码,来检测代码功能的实现是否正确是否完善.正确性论证:通过对代码规格和逻辑的严密分析,推论和证明,来验证代码实现的正确 ...

  7. dlib编译成静态库及被其它程序调用

    一.git下载:https://github.com/davisking/dlib 官网:http://dlib.net/ 二.vs中编译成静态库 1.在vs2015中创建静态库工程(vs2015以上 ...

  8. CentOS7安装GitLab服务

    安装GitLab服务 1.安装必要依赖 yum install -y curl policycoreutils openssh-server openssh-clients postfix 2.下载安 ...

  9. Elasticsearch学习笔记(五)索引元数据和集群元数据

    一.索引元数据 执行:GET /ecommerce/product/1 返回结果: {   "_index": "ecommerce",   "_ty ...

  10. linux内核态和用户态的信号量

    在Linux的内核态和用户态都有信号量,使用也不同,简单记录一下. 1> 内核信号量,由内核控制路径使用.内核信号量是struct semaphore类型的对象,它在中定义struct sema ...