一 、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. pthread_detach()与pthread_join的区别?

    简单来说: pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收.pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源. [转]在 ...

  2. jquery 实现tab切换

    大家都知道 使用QQ的时候需要输入账号和密码 这个时候一个TAB键盘就可以实现切换到下一个输入框里 具体是怎么实现的呢 请看代码 <!DOCTYPE html> <html lang ...

  3. Selenium 3----定位一组元素+多表单切换+多窗口切换

    定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...

  4. Selenium 3----WebDriver常用方法

    在学会定位元素的基础上,进行元素的操作. WebDriver常用方法: clear(): 清除文本. send_keys (value): 模拟按键输入. click(): 单击元素. submit( ...

  5. keepalived + nginx 实现双机热备

    # docker run -itd --name centos_m1 centos # 进入容器 # docker exec -it centos_m1 /bin/bash # 安装nginx # r ...

  6. A计划 HDU - 2102

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. 动态规划 hdu 1024

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. linux03:系统常用的命令

    1,蜗牛,硬件-内核-接口API(系统调用接口)-程序或者服务,用户不能直接和硬件对话,所以需要一个翻译器,这个翻译器就是shell.美国盾牌 2,shell是一个翻译官,bash是所有翻译官里面干的 ...

  9. 封装和static 以及关键字“this”的用法

    1 封装 1.1 构造方法 构造方法是一种特殊的方法,专门用于构造/实例化对象,形式 [修饰符] 类名(){}: 1.1.1 无参构造 无参构造方法就是构造方法没有任何参数.构造方法在创建对象(new ...

  10. weakhashmap简单理解

    map中的key(注意String,和元数据作key有特殊性),gc后会被立马干掉, key被干掉后,其对应的entry将被存入queue中 /** * Reference queue for cle ...