Qt6之QSetting读取为空或失败

一、目的 

QSetting终极目的是,模糊平台,一套方法可以同时写入或者读取配置文件及注册表。

二、问题

 QSetting确实兼顾了平台,linux、mac、windows三大平台均能使用,但就像所有事物一样,大一统的背后必定要做出一些让步,在我看来也在所难免,毕竟这三个平台差异太大了,下面逐个看已知问题:

1、读取中文乱码

setIniCodec该方法在qt6中已经被彻底移除,qt6中默认是UTF-8;

如果版本早于qt6,请按如下使用,否则读取中文乱码:

QSettings settings("D:/user.ini", QSettings::IniFormat);
settings.setIniCodec(QTextCodec::codecForName("UTF-8"));
……

2、如果键值中有,号则是数组

如下图,当值中有逗号时,取值必须用数组,否则值为空;

 3、如果键值中有;号则只读分号之前数据

 4、无法读取带"\"键的键值

qt文档中明确标注\是分割符,所以值中有该符号时QSetting读取为空,建议采用以下方法读取

QFile file(path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return "";
QTextStream in(&file);
QString String;
while (!in.atEnd())
{String= in.readLine();if(String.contains(value+"=")){String.remove(value+"=");out=String;break;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18884.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【新星计划·2023】认识和学习BASH(一)

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、认识BASH 1、硬件、核心与Shell ①硬件 ②核心管理 ③应用程序 2、为何要学文字接口的shell? 3、系统的合法shel…

基于java+servlet+mysql-图书商城

基于javaservletmysql-图书商城 一、系统介绍二、功能展示1.项目骨架2.首页3.图书详情4.我的订单5.我的购物车6、注册7、登录8、图书管理9、订单管理 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java web项目 项目名称:基于javaservlet…

快速排序的三种方法

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大…

Vscode 绿色系清新主题

炎炎夏日,上班上的心浮气躁,敲代码的时候,只觉昏昏沉沉,浑浑噩噩... 给vscode换一个一个清新美好的绿色主题,充满活力和希望吧。 朋友们,收藏起来,每个季节换一个主题,打工快乐&am…

Linux查找关键字出现的位置

在Linux中,您可以使用以下命令来查找文件中关键字出现的位置: grep -rnw /path/to/search -e keyword其中: - -r 递归地搜索指定路径下的所有子目录。 - -n 显示匹配行的行号。 - -w 完整匹配单词,而不是部分匹配。 - /path/to/s…

ubuntu安装单个redis服务

1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误, 改成使用root账号操作 2.安装完成后,Redis服务器会自动启动,查看进程是否正常启动 ps -axu|grep redis redis 18689 0.1 0.4 40136 6860 ? …

Spark(20):SparkStreaming之概述

目录 0. 相关文章链接 1. Spark Streaming 是什么 2. Spark Streaming 的特点 2.1. 易用 2.2. 容错 2.3. 易整合到Spark体系 3. Spark Streaming 架构 3.1. 架构图 3.2. 背压机制 0. 相关文章链接 Spark文章汇总 1. Spark Streaming 是什么 Spark 流使得构建可扩展的…

从零开始,轻松搭建和使用SVN版本控制系统的完整指南(包含本地和idea使用svn)

文章目录 前言一、SVN简介二、在Linux搭建SVN(在线安装)三、本地使用SVN四、idea集成svn 前言 这篇文章将为读者提供如下内容,希望对你有帮助(本人亲测,已成功): 如何在Linux环境下搭建和配置…

docker入门(Linux环境下安装Docker,Docker构建镜像)

docker入门(利用docker部署web应用) 一:什么是Docker 1.1 官方解释 Docker is the world’s leading software containerization platform。 Docker公司开发,开源,托管在github跨平台, 支持Windows、Macos、Linux。 1.2 抽象解释 docker…

difflib 比较文本相似度,找出错误值

在日常的数据分析过程中,我们可能会遇到这样的问题。在处理数据时,有的文本内容是同一类目,但是由于手工输入错误 或者大小写的问题,可能会造成将产品分到不同的类目下,这时候就需要对数据进行清洗。如何实现快速比较…

Spring接收前端传递数据的方式

搭建项目 然后点击下一步完成即可搭建成功 在pom文件中导入lombok的jar包,帮助我们快速创建实体类 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version> </dependency&…

《C语言初阶篇》循环语句还没搞懂?这篇文章带你轻松学会循环语句!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; 循环语句的介绍&#x1f4ac; while 语句的介绍&#x1f4ad; while中的break&#x1f4ad;…