当前位置: 首页 > news >正文

域名访问网站怎么下载书籍设计网站推荐

域名访问网站怎么下载,书籍设计网站推荐,网站的后期运营及维护费用,外贸大型门户网站建设目录 相关背景 .ini配置文件是什么 QSettings是什么 操作介绍 头文件 构造一个QSettings对象 读取配置值 写入配置值 检查键是否存在 删除键 同步到磁盘 分组操作 获取所有键 获取子键 获取当前分组的所有子分组 相关背景 在Qt中,同样存在用户打开某…

目录

相关背景

.ini配置文件是什么

QSettings是什么

操作介绍

头文件

构造一个QSettings对象

读取配置值

写入配置值

检查键是否存在

删除键 

同步到磁盘

分组操作

获取所有键

获取子键

获取当前分组的所有子分组


相关背景

        在Qt中,同样存在用户打开某个界面进行了一些操作,二次打开后,对应界面需要保存着上次的选择,不能又与第一次打开一样都为空的,比如勾选了一些勾选框启用某些服务,在MFC中,我们是通过pugi::xml将配置信息写入xml文件中,而Qt有提供一个QSettings专门来操作这种配置文件,本篇文章是对使用QSettings读取和写入.ini配置文件的一个总结,会介绍一些前置知识,要直接看如何操作以及操作示例的可以根据目录选择自己需要看的内容噢!

.ini配置文件是什么

        .ini文件是一种初始化文件,是windows系统中最常见的配置文件格式之一,他使用key-value键值对的格式来存储程序的配置信息和系统参数。

        如下就是一个ini配置文件的内容:

[Database]
host=localhost
port=3306
username=root
password=123456
database=myapp
connection_timeout=30

QSettings是什么

QSettings是Qt框架提供的一个配置管理类,专门用于:

  • 持久化存储应用程序的配置信息
  • 跨会话保持用户的偏好设置
  • 统一管理各种类型的配置数据

QSettings的本质就是一个键值对存储系统

/*键(Key) -> 值(Value)*/
"window_width" -> 800
"user_name" -> "张三"
"auto_save" -> true

操作介绍

头文件

#include <QSettings>

构造一个QSettings对象

构造的方式有很多,这里主要介绍使用指定配置文件路径和格式构造

函数原型:

QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr);

这种方式可以指定具体的配置文件路径和格式:

参数说明:

  • fileName :配置文件的完整路径
  • format :文件格式,常用的有 QSettings::IniFormat (INI文件)、 QSettings::NativeFormat (系统原生格式)
  • parent :父对象(可选)

使用示例:

	QString sFilePath = QCoreApplication::applicationDirPath() + "/config.ini";QSettings settings(sFilePath, QSettings::IniFormat);

如果配置文件已存在,会加载其内容到内存中。 

备注:

        QCoreApplication::applicationDirPath() 是Qt框架中的一个静态方法,用于获取当前应用程序可执行文件所在的目录路径。还有一些其他的方法比如:

函数返回内容
applicationDirPath()应用程序可执行文件所在目录
applicationFilePath()应用程序可执行文件的完整路径
applicationName()应用程序名称

读取配置值

函数使用示例:

int value = settings.value("key", 123).toInt();

函数介绍:

  • "key"参数指定要读取的配置项的键名。
  • 123是读取的配置项的默认值,当指定的配置项的键不存在的时候返回这个值
  • .toInt()将读取的QVariant值转换为整数类型,这个根据需要进行转换。

分组读取配置值,在本文后面的介绍分组的时候会介绍哈!

写入配置值

函数使用示例:

settings.setValue("key", 456);

函数介绍:

  • "key"是指定要写入的配置名的项的键名
  • 456是这个键名对应的值,会被自动转换为QVariant类型
  • 如果键已存在,覆盖原有值,不存在,则创建新建

需要注意的是,这个写入只是将键值对保存到内存中的缓存,根据Qt的延迟写入机制,不会立即写入文件,而是在对象销毁时或调用sync()写入。

分组写入配置值,在本文后面的介绍分组的时候会介绍哈!

检查键是否存在

函数使用示例:

if (settings.contains("key")) {// 键存在
}

函数介绍:

  • 检查指定的键名是否存在于配置文件中,只在内存中找,不会修改配置文件。

删除键 

函数使用示例:

settings.remove("key");

函数介绍:

  • 从配置中删除指定的键及其值,首先从加载到内存中的配置文件内容对应的键移除,在对象销毁或调用sync()时进行,如果键不存在,此操作也不会 发生错误,内部有进行判断。 

同步到磁盘

函数使用示例:

settings.sync();

函数介绍:

  • 强制将目前内存中的所有更改立即写入到磁盘,刷新缓存,确保数据吃就好,返回同步状态,可用于检查是否成功。

分组操作

分组操作一般是需要开始分组和结束分组,形成一个闭环。

如下:

/*开始分组*/
settings.beginGroup("GroupName");/*读取或者写入配置操作*//*结束分组*/
settings.endGroup();

分组可以嵌套,按照后进先出的顺序结束。分组操作就是在.ini文件增加一个[GroupName] 节点,如下[Software]就是一个分组节点:

[Software]
language=chs
AppMode=2
curserver=V-NET(ASEAN)

获取所有键

函数使用示例:

QStringList keys = settings.allKeys();

函数介绍:

  • 返回当前分组下所有键的列表,如果在根级别调用,返回所有键(包括所有分组中的键),返回的键名包含完整路径,如 "GroupName/SubGroup/key",也就是会包含它的分组名。

示例:

假设配置文件如下:

[General]
name=John
age=25
[General/Advanced]
debug=true
[Database]
host=localhost

获取所有键的结果如下:

QStringList allKeys = settings.allKeys();
// allKeys 包含: 
//["General/name", "General/age", "General/Advanced/debug", "Database/host"]

获取子键

函数使用示例:

QStringList childKeys = settings.childKeys();

函数介绍:

  • 返回当前分组下的直接子键,不包含子分组中的键,返回的键名不包含分组前缀。

示例:

// 假设配置文件内容:
// [General]
// name=John
// age=25
// [Database]
// host=localhost
// port=3306// 获取根级别的子键
QStringList rootKeys = settings.childKeys();
// rootKeys 为空,因为根级别没有直接的键,只有分组// 进入 General 分组
settings.beginGroup("General");
QStringList generalKeys = settings.childKeys();
// generalKeys 包含: ["name", "age"]
settings.endGroup();// 进入 Database 分组
settings.beginGroup("Database");
QStringList dbKeys = settings.childKeys();
// dbKeys 包含: ["host", "port"]
settings.endGroup();

获取当前分组的所有子分组

函数如下:

QStringList rootGroups = settings.childGroups();

函数介绍:

  • 返回当前分组下的所有直接子分组名称列表。

示例:

QSettings settings("config.ini", QSettings::IniFormat);// 获取根级别的子分组
QStringList rootGroups = settings.childGroups();
// rootGroups 包含: ["General", "Database"]// 假设有嵌套分组:
// [Window]
// width=800
// [Window/Position]
// x=100
// y=200settings.beginGroup("Window");
QStringList windowGroups = settings.childGroups();
// windowGroups 包含: ["Position"]
settings.endGroup();

如上就是关于QSettings对配置文件的相关操作介绍。

http://www.dtcms.com/a/399083.html

相关文章:

  • Playwright UI自动化实战速成指南
  • 【11408学习记录】考研数学线性代数核心突破:初等变换与初等矩阵完全攻略
  • 两学一做知识竞赛试题网站怎样做营销型网站推广ppt
  • 在HTTP请求上运行SQLMap靶机(打靶记录)
  • 全球外贸网站排名wordpress 媒体播放
  • wordpress 多站点配置文件市场调研公司是做什么业务的
  • Linux/Ubuntu 终端常用压缩工具XZ/BZip2/Gzip
  • 做网站的应用公司做网站要花多少钱
  • 医药行业从OCR到IDP的应用延申
  • 想自己做点飘纱素材到网站上买网站友情链接连接
  • 企业级一体化信创DevOps平台选型指南:如何平衡效率、安全与合规?
  • 网站页面打开速度哈尔滨网站营销推广
  • python+spingboot+vue学生宿舍报修及缴费系统 故障报修 工单处理 在线缴费查询 后勤服务管理平台 报修申请+缴费记录+维修进度跟踪系统
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之三
  • 超级分享 局域网文件互传 Easy Share WiFi File Transfer v1.5.22 解锁高级会员版
  • Redis 监听过期Key
  • 随身WiFi二合一设备开发深度解析:Wi-Fi 6模块集成与三网切换算法优化
  • 国内做外单的网站有哪些200元网站建设
  • 口碑好的江苏网站建设wix做的网站在国内访问不
  • 学习目标:HTML快捷键
  • RoadCLIP 笔记 针对自动驾驶优化的 CLIP 变体 vlm
  • 一文可视化分析2025年8月arXiv机器学习前沿热点
  • 网站闭关保护怎么做找人做的网站怎么看ftp
  • 高性能内存池(一)----项目整体架构设计
  • 笔记(C++篇)—— Day 10
  • Express使用教程(三 - 集成mysql)
  • Universal bovine identification via depth data and deep metric learning 阅读笔记
  • MySQL中limit 1的用法
  • 西门子840d sl 学习笔记 持续更新中。。。
  • 大良网站建设公司网站空间推荐