Qt的QSettings类和.ini文件读写
- 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文件读写的更多相关文章
- C#对INI文件读写
C#本身没有对INI格式文件的操作类,可以自定义一个IniFile类进行INI文件读写. using System; using System.Collections.Generic; using S ...
- QSettings配置读写-win注册表操作-ini文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写 本文地址:http:// ...
- [IO] C# INI文件读写类与源码下载 (转载)
/// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...
- C# 如何实现完整的INI文件读写类
作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...
- C# INI文件读写类
public class Ini { // 声明INI文件的写操作函数 WritePrivateProfileString() [System.Runtime.InteropServices.DllI ...
- INI文件读写类
public class INIClass { public string inipath; [DllImport("kernel32")] private static exte ...
- 封装 INI 文件读写函数
delphi读写ini文件实例 //--两个过程,主要实现:窗体关闭的时候,文件保存界面信息:窗体创建的时候,程序读取文件文件保存的信息. //--首先要uses IniFiles(单元) //--窗 ...
- C#实现.ini文件读写操作
1.ini文件是什么? 见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...
- ini文件读写 保存上次存储内容
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
随机推荐
- JDBC API访问数据库的基本步骤。
JDBC本质:官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这个接口,提供数据库驱动jar包. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类. 任 ...
- 配置OpenLDAP,Java操作LDAP,DBC-LDAP进访问
LDAP快速入门 1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的 ...
- SpringBoot -- 配置mysql、hibernate
# application.properties# Server settings (ServerProperties)server.port=8081server.address=127.0.0.1 ...
- 实体类的[Serializable]标签造成WebAPI Post接收不到值
WebAPI: [HttpPost] public HttpResponseMessage test([FromBody]List<Class1> list) { return Commo ...
- 笨办法学python 13题:pycharm 运行
笨办法学python 13题 代码: # -*- coding: utf-8 -*- from sys import argv # argv--argument variable 参数变量 scrip ...
- Java之类的继承
说起来Java的类,不得不说以下几个方面:继承.转型.重写.多态和接口. 今天来说一说继承,转型和重写几个方面: 继承(extends)即子类继承父类,就好比玻璃杯.保温杯等子类继承了杯子这个父类,子 ...
- VBA计算器的全部实现
我们将加入 除零逻辑 和 对话框提示. 后面 就很简单了~~~ 提供效果图跟 代码 代码示例 Sub 矩形1_Click() ' ' 矩形1_Click Macro ' 代码编辑 Dim number ...
- TCP网络编程(Socket通讯)
TCP 网路编程: 1.TCP 三次握手: 第一次握手,客户端向服务器端发出连接请求,等待服务器确认. 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求. 第三次握手,客户端再次向服 ...
- 【Qt开发】QThread介绍
回顾Qt之线程(QThread),里面讲解了如何使用线程,但还有很多人留言没有看明白,那么今天我们来一起瞅瞅关于QThread管理线程的那些事儿... 一.线程管理 1.线程启动 void start ...
- Nginx/Nginx基础学习
Nginx与node.js 一.Nginx与Node.js Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡. ...