QT使用QSetting保存程序运行时的一些状态信息到配置文件

这篇具有很好参考价值的文章主要介绍了QT使用QSetting保存程序运行时的一些状态信息到配置文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:https://zhuanlan.zhihu.com/p/351214526

介绍

在产品使用过程中,有些用户有特定的习惯。比如窗口大小是的大小,文件打开的方式等等。

因此我们需要有一个文件来保存用户的一些偏好信息,在程序重新启动的时候再进行偏好设置。

这里用到了QSetting类。

这个类允许你创建一个配置文件或者操作注册表,你还可以指定配置文件的位置,当然,读取也是没问题的。

头文件

#include <QSettings>

使用方式

首先定义一个Qsetting指针确定路径

QString settingPath = QCoreApplication::applicationDirPath() + "/setting.ini";
QSettings *settings = new QSettings(settingPath,QSettings::IniFormat);

然后在一个Group里使用setValue,就可以写入到文件,示例如下

	settings->beginGroup("PortA");
    settings->setValue("COM",ui->comboBox_com->currentText());
    settings->setValue("Baud",ui->comboBox_baud->currentText());
    settings->endGroup();

读文件使用Value,示例如下:

	settings->beginGroup("PortA");
    settings->value("COM").toString()
    settings->endGroup();

记得不管是保存,还是读取,用完后要释放指针

delete settings;

保存到文件例子:

示例:比如在析构函数中写入配置文件

PortA::~PortA()
{

    //保存关闭时的状态
    QString settingPath = QCoreApplication::applicationDirPath() + "/setting.ini";
    QSettings *settings = new QSettings(settingPath,QSettings::IniFormat);
    settings->beginGroup("PortA");
    settings->setValue("COM",ui->comboBox_com->currentText());
    settings->setValue("Baud",ui->comboBox_baud->currentText());
    settings->setValue("Parity",ui->comboBox_parity->currentText());
    settings->setValue("Databit",ui->comboBox_databit->currentText());
    settings->setValue("Stopbit",ui->comboBox_stopbit->currentText());

    settings->setValue("str0",ui->lineEdit_ex0->text());
    settings->setValue("str1",ui->lineEdit_ex1->text());
    settings->setValue("str2",ui->lineEdit_ex2->text());
    settings->setValue("str3",ui->lineEdit_ex3->text());
    settings->setValue("str4",ui->lineEdit_ex4->text());
    settings->setValue("str5",ui->lineEdit_ex5->text());
    settings->setValue("str6",ui->lineEdit_ex6->text());
    settings->setValue("str7",ui->lineEdit_ex7->text());

    settings->setValue("hex_ex0",ui->checkBox_ex0->isChecked());
    settings->setValue("hex_ex1",ui->checkBox_ex1->isChecked());
    settings->setValue("hex_ex2",ui->checkBox_ex2->isChecked());
    settings->setValue("hex_ex3",ui->checkBox_ex3->isChecked());
    settings->setValue("hex_ex4",ui->checkBox_ex4->isChecked());
    settings->setValue("hex_ex5",ui->checkBox_ex5->isChecked());
    settings->setValue("hex_ex6",ui->checkBox_ex6->isChecked());
    settings->setValue("hex_ex7",ui->checkBox_ex7->isChecked());

    settings->setValue("protocol_filename",protocol_filename);

    settings->endGroup();
    delete settings;
    delete ui;
}

读取配置文件示例:

比如在构造函数中读取配置文件:文章来源地址https://www.toymoban.com/news/detail-634645.html

PortA::PortA(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::PortA)
{
    ui->setupUi(this);


    //读取上次关闭时的状态
    QString settingPath = QCoreApplication::applicationDirPath() + "/setting.ini";
    QSettings *settings = new QSettings(settingPath,QSettings::IniFormat);
    settings->beginGroup("PortA");
    ui->comboBox_com->setCurrentText(settings->value("COM").toString());
    ui->comboBox_baud->setCurrentText(settings->value("Baud").toString());
    ui->comboBox_parity->setCurrentText(settings->value("Parity").toString());
    ui->comboBox_databit->setCurrentText(settings->value("Databit").toString());
    ui->comboBox_stopbit->setCurrentText(settings->value("Stopbit").toString());

    ui->lineEdit_ex0->setText(settings->value("str0").toString());
    ui->lineEdit_ex1->setText(settings->value("str1").toString());
    ui->lineEdit_ex2->setText(settings->value("str2").toString());
    ui->lineEdit_ex3->setText(settings->value("str3").toString());
    ui->lineEdit_ex4->setText(settings->value("str4").toString());
    ui->lineEdit_ex5->setText(settings->value("str5").toString());
    ui->lineEdit_ex6->setText(settings->value("str6").toString());
    ui->lineEdit_ex7->setText(settings->value("str7").toString());

    ui->checkBox_ex0->setChecked(settings->value("hex_ex0").toBool());
    ui->checkBox_ex1->setChecked(settings->value("hex_ex1").toBool());
    ui->checkBox_ex2->setChecked(settings->value("hex_ex2").toBool());
    ui->checkBox_ex3->setChecked(settings->value("hex_ex3").toBool());
    ui->checkBox_ex4->setChecked(settings->value("hex_ex4").toBool());
    ui->checkBox_ex5->setChecked(settings->value("hex_ex5").toBool());
    ui->checkBox_ex6->setChecked(settings->value("hex_ex6").toBool());
    ui->checkBox_ex7->setChecked(settings->value("hex_ex7").toBool());

    settings->endGroup();
    
    delete settings;


}

到了这里,关于QT使用QSetting保存程序运行时的一些状态信息到配置文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么叫运行时的Java程序?

    开发人员在Java开发环境中输入程序代码,形成后缀名为.java的Java源文件。 使用Java编译器对源文件进行错误排查,并生成后缀名为.class的字节码文件。 JRE中的Java解释器将字节码文件翻译成机器代码并执行,显示程序运行结果。 JRE (Java Runtime Environment,简称JRE,Java运行时环

    2024年03月14日
    浏览(70)
  • STM32使用SPI通信时的一些常见问题及解决方法(主,从)

            最近在做一个多MCU的项目时,MCU之间的数据传输使用了SPI通信,在做从机时遇到了一些 “疑难杂症”,研究了半天,总算是把故障排除了,就又总结了一下SPI常遇到的几种问题写出来整理一下。 目录 一、SPI简介:  二、常见问题: 三、疑难杂症: Q1:使用的HAL库,

    2024年02月21日
    浏览(68)
  • 关于【Git】push失败与使用小乌龟(TortoiseGit)时的一些报错解决方案

    原因.小乌龟没有设置git路径,解决如下 将红框标注的地址改为自己的git安装地址即可。 原因是设置了全局代理没有清除 如果依然出现该错误 重新push即可。 一些刚学习vs的用户们可能会不熟悉界面,打开了一些不该打开的应用,vs自带的git即使如此,他会和自身安装的GIt与

    2024年02月08日
    浏览(65)
  • 【ARM Trace32(劳特巴赫) 使用介绍 3 - trace32 访问运行时的内存】

    请阅读 【ARM Coresight SoC-400/SoC-600 专栏导读】 上篇文章:【ARM Trace32(劳特巴赫) 使用介绍 2.2 – TRACE32 进阶命令之 DIAG 弹框命令】 下篇文章:【ARM Trace32(劳特巴赫) 使用介绍 4 - Trace32 Discovery 详细介绍】 1.1.1 侵入式 运行时内存访问 侵入式意思是CPU周期性的停止和启动,这样外

    2024年02月03日
    浏览(84)
  • Flask 使用Flask的session来保存用户登录状态例子

    使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。 当用户发送POST请求到 /login 接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是\\\'admin\\\'和\\\'admin123\\\'),则会将用户名保存在session中,并将session设置为永久有效。这意味着用户在

    2024年02月16日
    浏览(50)
  • C++将字符或程序运行的记录保存进txt

     

    2024年02月15日
    浏览(34)
  • 基于 Qt 的可视化图片处理程序——图片的加载与保存

    点击按钮选择文件 首先要确定,使用 Qt 中 QFileDialog 库中的 getLoadFile 进行选择文件。 代码如下: 运行效果如下: 图片加载到 Label 在 Qt 中,我们一种最常用的图片加载方式就是使用 QImage 库,此处我们通过 QImage 加载图片,之后通过加载到 QPixmap 中,最终显示在 Label 上 首先

    2024年02月16日
    浏览(44)
  • Qt中的配置文件:实现个性化应用程序配置与保存加载

    在现代软件开发中,用户对于应用程序的个性化配置和设置变得越来越重要。为了满足用户需求并提供更好的用户体验,开发人员常常需要实现一种机制,以便在每次启动应用程序时能够记住用户上次的配置。这样用户就可以方便地恢复到他们熟悉的环境,无需重新进行所有

    2024年02月11日
    浏览(54)
  • 用webpack做一些前端打包时的性能优化

    一.webpack 的五个核心概念 1.Entry:入口指示,webpack以哪个文件为入口起点开始打包,分析构建内部依赖图 2.output:输出指示,webpack打包后的资源bundles输出到哪里去,以及如何命名 3.loader :loader让webpack能够去处翻译理那些非js文件(img css…) 4.Plugins :Plugins插件可以用于执行范围

    2024年02月12日
    浏览(50)
  • Qt使用QWebEngineView一些记录

    1.关闭软件警告: Release of profile requested but WebEnginePage still not deleted. Expect troubles! 原因,系统退出关闭view,没有释放page。 解决办法:手动释放page  顺便把view也释放了。 2.获取QWebEngineView点击超链接 重写QWebEngineView中的createWindow函数 3.获取QWebEngineView当前链接 QWebEngineView自带

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包