QSettings使用

QSettings使用头文件 include QSettings 一 最简单操作 QSettings minifile 声明 minifile newQSettings config1 ini QSettings IniFormat 实例化 QSettings 构造函数的第一个参数是 ini 文件的路径 第二个参数表示针对 ini 文件 第三个参数 QSettings

头文件

 

#include 
   
  

一、最简单操作

QSettings *minifile; //声明 minifile = new QSettings("./config1.ini", QSettings::IniFormat);//实例化 //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省 minifile->setValue("/para1/first", ""); //写 // /节/键 ,值 qDebug() <<"111"<< minifile->value("/para1/first"); //读

效果:

QSettings使用

1、config.ini程序自动创建,不用手动创建

2、ini文件介绍

.ini 文件是Initialization File的缩写,即初始化文件。

INI文件由节、键、值组成。

[section]

参数(键=值)

name=value

例如:

[Section1 Name]

KeyName1=value1

KeyName2=value2

[Section2 Name]

KeyName21=value21

KeyName22=value22

其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。

注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

二、类封装管理

1、声明config.h:

#ifndef CONFIG_H #define CONFIG_H #include 
  
    #include 
   
     class Config { public: Config(QString qstrfilename = ""); //构建 virtual ~Config(void); //解析 void Set(QString,QString,QVariant); //增,改 QVariant Get(QString,QString); //取值 void clear(); //清除所有 private: QString m_qstrFileName; QSettings *m_psetting; }; #endif // CONFIG_H 
    
  

 2、config.c

#include "config.h" #include 
  
    #include 
   
     Config::Config(QString qstrfilename) { if (qstrfilename.isEmpty()) { //无文件名,默认Config.ini m_qstrFileName = QCoreApplication::applicationDirPath() + "/Config.ini"; } else { m_qstrFileName = qstrfilename; } m_psetting = new QSettings(m_qstrFileName, QSettings::IniFormat); // qDebug() << m_qstrFileName; } Config::~Config() { delete m_psetting; m_psetting = 0; } void Config::Set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue) { m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue); } QVariant Config::Get(QString qstrnodename,QString qstrkeyname) { QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname)); return qvar; } void Config::clear() { m_psetting->clear(); } 
    
  

3、使用时添加头文件”config.h”

void MainWindow::saveConfig() //存 { Config().clear(); //清除 Config().Set("serialconfig","BaudRate",ui->BaudRateBox->currentIndex()); Config().Set("serialconfig","DataBit",ui->DataBitsBox->currentIndex()); Config().Set("serialconfig","Parity",ui->ParityBox->currentIndex()); Config().Set("serialconfig","stopbit",ui->stopbitBox->currentIndex()); Config().Set("serialconfig","flow",ui->flowBox->currentIndex()); for(int i=0;i 
  
    txcomboBox->count();i++){ Config().Set("sendData",QString::number(i),ui->txcomboBox->itemText(i)); } for (int j = 0; j < ui->listWidget->count();j++){ Config().Set("fixedData",QString::number(j),ui->listWidget->item(j)->text()); } } void MainWindow::readConfig() { //读取 ui->BaudRateBox->setCurrentIndex(Config().Get("serialconfig","BaudRate").toInt()); ui->DataBitsBox->setCurrentIndex(Config().Get("serialconfig","DataBit").toInt()); ui->ParityBox->setCurrentIndex(Config().Get("serialconfig","Parity").toInt()); ui->stopbitBox->setCurrentIndex(Config().Get("serialconfig","stopbit").toInt()); ui->flowBox->setCurrentIndex(Config().Get("serialconfig","flow").toInt()); QString buff; for(int i = 0;i < MAXITEMCOUNT;i++){ buff = Config().Get("sendData",QString::number(i)).toString(); if(buff.isEmpty()){ break; }else{ ui->txcomboBox->addItem(buff); } } for(int j = 0;j < MAXITEMCOUNT;j++){ buff = Config().Get("fixedData",QString::number(j)).toString(); if(buff.isEmpty()){ break; }else{ ui->listWidget->addItem(buff); } } } 
  

效果:

QSettings使用

参考:       https://blog.csdn.net/qiurisuixiang/article/details/

                                 https://blog.csdn.net/_/article/details/

QString的arg方法:https://blog.csdn.net/xu/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222797.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:00
下一篇 2026年3月17日 下午3:01


相关推荐

  • 导航守卫beforeEach的运用

    导航守卫beforeEach的运用beforeEach用于在路由跳转前要执行的方法。我在项目中用于全局main.js中,判断是否登录,如果登录就继续跳转,没有登录就去跳转页面constrouter=newVueRouter({…})router.beforeEach((to,from,next)=&gt;{if(to.matched.some(record=&gt;record.meta.req…

    2022年6月29日
    31
  • parse_str() 函数把查询字符串解析到变量中。

    parse_str() 函数把查询字符串解析到变量中。

    2021年10月12日
    56
  • 云计算服务IaaS, PaaS和SaaS简介

    云计算服务IaaS, PaaS和SaaS简介IaaS PaaS 和 SaaS 简介 1 IaaS2 PaaS3 SaaS4 IaaS PaaS 和 SaaS 区别 1 IaaSInfrastr as a Service 基础设施即服务 提供给消费者的服务是对所有计算基础设施的利用 包括处理 CPU 内存 存储 网络和其它基本的计算资源 用户能够部署和运行任意软件 包括操作系统和应用程序 消费者不管理或控制任何云计算基础设施 但能控制操作系统的选择 存储空间 部署的应用 也有可能获得有限制的网络组件 例如路由器 防火墙 负载均衡器等 的

    2026年3月17日
    2
  • Excel解密——okfone解密大师

    Excel解密——okfone解密大师Excel工作表为了保护数据,设置了打开密码,时间久了就把密码忘记了,这种情况该怎么办。这个情况可以考虑使用解密软件帮你将工作簿密码找回。okfoneExcel解密大师可以解决密码忘记的问题,使用教程如下:打开okfoneExcel解密大师,点击【找回密码】将Excel文件添加进去,选择找回方法,然后点击【开始】密码找回成功就会在软件界面上显示![…

    2022年6月28日
    125
  • APP启动流程解析

    APP启动流程解析前言当我们点击手机屏幕上的软件图标时 就可以打开这个软件 看似很简单的过程其实包含了许多的底层交互 看了还不明白 欢迎来打我 一 启动流程简介首先要知道的是 手机屏幕其实就是一个 Activity 我们专业点将其称为 Launcher 相信做过车载设备开发的朋友肯定不会陌生 Launcher 是手机厂商提供的 不同的手机厂商比拼的就是 Launcher 的设计 当然我们自己也可以去编写 Lau

    2026年3月18日
    2
  • 遨驰设置了端口转发后访问OpenClaw WebUI提示:origin not allowed (open the Control UI from the ga

    遨驰设置了端口转发后访问OpenClaw WebUI提示:origin not allowed (open the Control UI from the ga

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号