• Detailed Description

    QSettings类提供了持久的跨平台的应用程序设置。用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。QSettings围绕这些抽象的技术,使我们能够以便携的方式保存和恢复应用程序设置。它还支持自定义存储格式。

    QSettings API基于QVariant,可以保存很多基础的类型,比如 QString、QRect、QImage等。

    如果你需要的是一个非持久性的基于内存结构,可以考虑使用QMap < QString, QVariant >代替。
  • Basic Usage

    当创建一个QSettings对象时,需要指定公司或组织名称以及产品名称。举个例子,产品名称为StarRunner公司名称为MySoft,那么可以创建如下的QSettings对象:
QSettings settings("MySoft", "Star Runner");

QSettings存储一系列的设置,每个设置包括指定设置名称(键)的一个字符串和一个与该键相关联的QVariant存储数据,使用setValue()来写入设置,举例如下:

settings.setValue("editor/wrapMargin", 68);

如果存在相同的设置键,现有的值将被新值覆盖。为了提高效率,这些变化可能不会被立即保存到永久存储(可以随时调用sync()来提交更改)。

可以通过value()来得到一个设置的值:

 int margin = settings.value("editor/wrapMargin").toInt();

如果键不存在,QSettings将会返回一个空的QVariant,这个空的QVariant可以转换为整数0。这时,我们可以通过另一个参数来指定默认值:

int margin = settings.value("editor/wrapMargin", 80).toInt();

为了测试一个给定的key是否存在,可以调用call()函数,可以通过调用remove()来移除相关的键,可以通过调用allKeys()得到所有的键,可以通过调用clear()来移除所有的键。

  • Member Function Documentation
QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)

构造一个QSettings对象,用于访问名为为fileName的存储文件。如果文件不存在,则创建文件。

QSettings::Format format的可取参数为:

Constant Value Description
QSettings::NativeFormat 0 使用平台最合适的存储格式设置。在Windows中,使用系统注册表;OS X和iOS中,使用的是CFPreferences API;在Unix中,使用的是INI格式的文本配置文件
QSettings::IniFormat 1 存储在INI文件中的设置。
QSettings::Registry32Format 2 Windows only: Explicitly access the 32-bit system registry from a 64-bit application running on 64-bit Windows. On 32-bit Windows or from a 32-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7.
QSettings::Registry64Format 3 Windows only: Explicitly access the 64-bit system registry from a 32-bit application running on 64-bit Windows. On 32-bit Windows or from a 64-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7.
QSettings::InvalidFormat 16 Special value returned by registerFormat().
void QSettings::setValue(const QString &key, const QVariant &value)

设置value为key的值,如果key已经存在,之前的value值将会被覆盖。

Eaxmple:

  QSettings settings;
settings.setValue("interval", 30);
settings.value("interval").toInt(); // returns 30 settings.setValue("interval", 6.55);
settings.value("interval").toDouble(); // returns 6.55
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const

返回key的value,如果key不存在,返回默认值。

Example:

QSettings settings;
settings.setValue("animal/snake", 58);
settings.value("animal/snake", 1024).toInt(); // returns 58
settings.value("animal/zebra", 1024).toInt(); // returns 1024
settings.value("animal/zebra").toInt(); // returns 0

Qt的QSettings类和.ini文件读写的更多相关文章

  1. C#对INI文件读写

    C#本身没有对INI格式文件的操作类,可以自定义一个IniFile类进行INI文件读写. using System; using System.Collections.Generic; using S ...

  2. QSettings配置读写-win注册表操作-ini文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http:// ...

  3. [IO] C# INI文件读写类与源码下载 (转载)

    /// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...

  4. C# 如何实现完整的INI文件读写类

    作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...

  5. C# INI文件读写类

    public class Ini { // 声明INI文件的写操作函数 WritePrivateProfileString() [System.Runtime.InteropServices.DllI ...

  6. INI文件读写类

    public class INIClass { public string inipath; [DllImport("kernel32")] private static exte ...

  7. 封装 INI 文件读写函数

    delphi读写ini文件实例 //--两个过程,主要实现:窗体关闭的时候,文件保存界面信息:窗体创建的时候,程序读取文件文件保存的信息. //--首先要uses IniFiles(单元) //--窗 ...

  8. C#实现.ini文件读写操作

    1.ini文件是什么?        见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...

  9. ini文件读写 保存上次存储内容

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

随机推荐

  1. 安装 Windows 系统在 NVMe 规范的 M.2 接口的固态硬盘(SSD)上

    作为一个程序员很重要的一项技能就是装系统 @_@,以前我都是随便用网上的工具做个系统盘,每次要用直接随手就搞好了,节省大家时间. 但最近同事装了个贼小的固态,然后我启动盘里的系统果断识别不出来他的固态 ...

  2. java网络通信:伪异步I/O编程(PIO)

    缺点:避免了线程资源耗尽的问题,但是根本上来说,serversocket的accept方法和inputstream的输入流方法都是阻塞型方法. 服务端:加了一个线程池,实现线程复用.客户端不变 pub ...

  3. html script生成二维码

    <div class="code" align="center"> <p >手机端扫描以下二维码直接观看(支持安卓Android/苹果i ...

  4. mybatisProxy

    config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configurati ...

  5. CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单

     水平&垂直对齐 元素居中对齐 .center { margin: auto; width: 50%; border: 3px solid green; padding: 10px; } 文本 ...

  6. 正则的?:pattern, ?=pattern, ?!pattern学习整理

    真正学习这次正则知识前,我是被这道题给难住了: # 目标文本 str1 = "ever1, ever2, never1, never2, never3, forever1, forever2 ...

  7. Mac020--常用插件

    Google浏览器常用插件 1.github插件octotree 2.掘金Chrome网上应用商店 2-1.掘金/老司机的神兵利器 2-2.好用的Google插件:来自掘金 3.Gliffy Diag ...

  8. kafka学习(五)

    kafka可靠的数据传递   kafka可靠性保证 ACID 是关系型数据库保证数据的规范,指的是原子性,一致性,隔离性和持久性,这是数据库给出的可靠性保证.   kafka给出的保证是什么? 1.k ...

  9. 【监控笔记】【2.3】扩展事件——慢查询SQL(执行超过3S的SQL)

    --sql server 2008及以上才支持,2012及以上才支持GUI界面 msdn 扩展事件:点击打开链接 [1]T-SQL实现 基于 rpc_completed(远程过程调用已完成时发生) 事 ...

  10. 使用idea搭建SSH

    一.新建项目 选中Spring strust2 hibernate 二.见项目根路径下的lib下的jar移动到WEB-INF下 移动 修改路径 在lib目录下导入[c3p0-0.9.5.2.jar]. ...