Qt QSettings用法

server/2025/2/11 11:01:03/

一、概述

QSettings类是Qt框架中的一个重要类,它主要用于存储和访问应用程序的设置和配置

二、QSettings的构造方式

1、基于组织名和程序名的构造方式(主要用于Windows注册表)

 1、explicit QSettings(const QString &organization,const QString &application = QString(), QObject *parent = nullptr);2、 QSettings(Scope scope, const QString &organization,const QString &application = QString(), QObject *parent = nullptr);//QSettings会在Windows注册表中读写指定组织名和程序名设置

2、基于文件名和构造的构造方式(用于读取、写入ini配置) 

 QSettings(const QString &fileName, Format format, QObject *parent = nullptr);//QSettings会读写指定文件名和格式的配置文件

3、无参的构造方式

explicit QSettings(QObject *parent = nullptr);

 三、QSettings的常用方法

1、setValue():用于设置配置项的值。可以存储各种类型的数据,如整数、字符串、布尔值等

     settings.setValue("string", "hello world");settings.setValue("int", 24);settings.setValue("double", 10.34);settings.setValue("bool", true);QStringList stringList;stringList << "Item1" << "Item2" << "Item3";settings.setValue("stringListKey", stringList);

2、value():用于读取配置项的值。如果配置项不存在,则返回指定的默认值

    QString loadedString = settings.value("stringKey").toString();int loadedInt = settings.value("intKey").toInt();double loadedDouble = settings.value("doubleKey").toDouble();bool loadedBool = settings.value("boolKey").toBool();QStringList loadedStringList = settings.value("stringListKey").toStringList();

3、beginGroup()和endGroup():用于开始和结束一个设置组。

settings.beginGroup("POLICY");
QString type1 = QString::fromUtf8(settings.value("type1").toString().toLatin1());
QString type2 = QString::fromUtf8(settings.value("type2").toString().toLatin1());
QString type3 = QString::fromUtf8(settings.value("type3").toString().toLatin1());
QString type4 = QString::fromUtf8(settings.value("type4").toString().toLatin1());
QString type5 = QString::fromUtf8(settings.value("type5").toString().toLatin1());
QString type6 = QString::fromUtf8(settings.value("type6").toString().toLatin1());
settings.endGroup();

4、sync():用于将内存中的设置同步到存储介质中

settings.setValue("Setting1", "Value1");
settings.sync();
// 强制立即写入

5、clear():用于清除所有配置项

settings.remove("ObsoleteSetting");
settings.clear();
// 删除所有设置

四、主要功能

1、存储设置:QSettings可以存储各种类型的数据,包括字符串、整数、布尔值等,这些数据通常用于保存应用程序的配置信息等。

QSettings settings(qcstr("ZH"), qcstr("APP"));m_appUniqueKey = QUuid::createUuid().toString(QUuid::Id128).toUtf8();settings.setValue(qcstr("AppUniqueKey"), QString::fromUtf8(m_appUniqueKey));

2、读取设置:QSettings能够方便地读取之前 存储的设置,使得应用程序可以在启动时恢复用户之前的状态或配置。

QString currentDir = QApplication::applicationDirPath();
QString systemPath = QString("%1/system.ini").arg(currentDir);
QSettings settings(systemPath,QSettings::IniFormat);
settings.setIniCodec(QTextCodec::codecForName("UTF-8"));

3、分组管理:QSettings支持使用组(group)来组织设置,这有助于更好地管理大量的配置信息。通过beginGroup()和endGroup()方法。

settings.beginGroup("POLICY");
QString type1 = QString::fromUtf8(settings.value("type1").toString().toLatin1());
QString type2 = QString::fromUtf8(settings.value("type2").toString().toLatin1());
QString type3 = QString::fromUtf8(settings.value("type3").toString().toLatin1());
QString type4 = QString::fromUtf8(settings.value("type4").toString().toLatin1());
QString type5 = QString::fromUtf8(settings.value("type5").toString().toLatin1());
QString type6 = QString::fromUtf8(settings.value("type6").toString().toLatin1());
settings.endGroup();


http://www.ppmy.cn/server/166733.html

相关文章

c++ haru生成pdf输出饼图

#define PI 3.14159265358979323846 // 绘制饼图的函数 void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) { float total 0; int i; // 计算数据总和 for (i 0; i < data_count; i) { tot…

java毕业设计之建设路小学芙童币和芙童印章管理系统源码(ssm+mysql)

项目简介 建设路小学芙童币和芙童印章管理系统实现了以下功能&#xff1a; 建设路小学芙童币和芙童印章管理系统的主要使用者管理员具有系统最高权限&#xff0c;通过授权登录后进行管理&#xff0c;包括修改个人密码、用户信息的管理。用户包括学生用户、老师用户、管理员用…

【JavaEE进阶】Spring IoC

目录​​​​​​​ &#x1f334;序言 &#x1f384;Spring是什么&#xff1f; &#x1f6a9;什么是容器&#xff1f; &#x1f6a9;什么是IoC&#xff1f; &#x1f333;IoC介绍 &#x1f6a9;传统程序开发 &#x1f6a9;问题分析 &#x1f6a9;解决方案 &#x1f6…

DeepSeek 关联 Word 使用教程:解锁办公新效率

在当今数字化办公时代&#xff0c;将强大的人工智能模型与常用办公软件相结合&#xff0c;能显著提升工作效率。DeepSeek 作为一款先进的人工智能工具&#xff0c;若能与广泛使用的办公软件 Word 实现关联&#xff0c;可在文档撰写、编辑、内容优化等诸多方面为用户带来极大便利…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…

优惠券平台(一):基于责任链模式创建优惠券模板

前景概要 系统的主要实现是优惠券的相关业务&#xff0c;所以对于用户管理的实现我们简单用拦截器在触发接口前创建一个单一用户。 // 用户属于非核心功能&#xff0c;这里先通过模拟的形式代替。后续如果需要后管展示&#xff0c;会重构该代码 UserInfoDTO userInfoDTO new…

【医院管理会计专题】2.管理会计:医院运营管理的隐形引擎

医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、引言 在当今医疗行业竞争日益激烈、运营成本不断攀升的背景下,医院运营管理面临着前所未有的挑战。管理会计作为一种综合性的财务管理工具,在医院运营管理中扮演着举足轻重的角色。它不仅能够为医院管理…

Visual Studio 进行单元测试【入门】

摘要&#xff1a;在软件开发中&#xff0c;单元测试是一种重要的实践&#xff0c;通过验证代码的正确性&#xff0c;帮助开发者提高代码质量。本文将介绍如何在VisualStudio中进行单元测试&#xff0c;包括创建测试项目、编写测试代码、运行测试以及查看结果。 1. 什么是单元测…