Qt | 配置文件QSetting的使用方法

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

Qt | 配置文件QSettings的使用方法


1、简介

配置文件常见的作用是启动软件是保留上次软件退出是的界面状态,如果不保留配置,且软件界面的内容又比较多,重启软件后界面恢复默认,那么每次打开界面都需要重新设置,这样比较麻烦,所以可以使用配置文件进行保存,软件启动的时候自动加载。


2、QSettings类的使用

Qt提供了QSetting类对配置进行管理,可以显示的指定为ini格式的配置文件,如果不显示的指定,则默认为:

  • windows系统,在注册表中(注册表位置:计算机\HKEY_CURRENT_USER\Software\软件名称)
  • maxos系统,在xml文件中
  • unix系统,在ini文件中

QSettings提供了静态函数对配置进行读取和设置。

使用vaule读取,value第二个参数可用来指定默认值:

QSettings("config.ini", QSettings::IniFormat).value("baudrate", 9600).toString();

使用setValue设置:

QSettings("config.ini", QSettings::IniFormat).setValue("baudrate", ui->baudrateComboBox->currentText());

除此之外还可以利用beginGroup和endGroup进行分组,这样对配置文件进行管理比较规范;使用beginReadArray、beginWriteArray、endArray对数组进行读写。


3、使用示例

对配置文件见得保存和写入比较规范的做法是覆写窗体的closeEvent和showEvent函数。文章来源地址https://www.toymoban.com/news/detail-639059.html

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    ui->baudrateComboBox->setEditable(true);
    ui->baudrateComboBox->addItems({"9600", "115200"});
    ui->databitsComboBox->addItems({"8", "7"});
    ui->stopbitsComboBox->addItems({"1", "2"});
    ui->parityComboBox->addItems({tr("无校验"), tr("奇校验"), tr("偶校验")});
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::showEvent(QShowEvent *e)
{
    QWidget::showEvent(e);

    ui->baudrateComboBox->setCurrentText(QSettings("config.ini", QSettings::IniFormat).value("baudrate", 9600).toString());
    ui->databitsComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("databits", 0).toInt());
    ui->stopbitsComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("stopbits", 0).toInt());
    ui->parityComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("parity", 0).toInt());

    // 恢复上次关闭软件时的窗口大小
    QSettings settings("config.ini", QSettings::IniFormat);
    settings.beginGroup("mainwindow");
    resize(settings.value("size").toSize());
    move(settings.value("pos", pos()).toPoint());
    settings.endGroup();
}

void MainWindow::closeEvent(QCloseEvent *e)
{
    QSettings("config.ini", QSettings::IniFormat).setValue("baudrate", ui->baudrateComboBox->currentText());
    QSettings("config.ini", QSettings::IniFormat).setValue("databits", ui->databitsComboBox->currentIndex());
    QSettings("config.ini", QSettings::IniFormat).setValue("stopbits", ui->stopbitsComboBox->currentIndex());
    QSettings("config.ini", QSettings::IniFormat).setValue("parity", ui->parityComboBox->currentIndex());

    // 记录软件关闭前的窗口大小和位置
    QSettings settings("config.ini", QSettings::IniFormat);
    settings.beginGroup("mainwindow");
    settings.setValue("size", size());
    settings.setValue("pos", pos());
    settings.endGroup();

    QWidget::closeEvent(e);
}

到了这里,关于Qt | 配置文件QSetting的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Qt qDebug基本的使用方法详解

    DebugView下载   qDebug是Qt框架中用于输出调试信息的一个宏。它类似于C++标准库中的std::cout,用于在控制台中输出调试信息。qDebug的使用非常简单,可以用于输出各种类型的数据,例如字符串、整数、浮点数等。 qInfo、qWarning、qCritical等,用于输出不同级别的调试信息。   

    2024年04月22日
    浏览(41)
  • Qt QThread的moveToThread方法使用

    从 Qt4.4 版本之后,因为 QThread 的 run 方法创建新线程这样实现与 Qt 设计的理念不符,Qt 主推使用 moveToThread 方法来创建新线程。 QThread应该被看做是操作系统线程的接口或控制点,而不应该包含需要在新线程中运行的代码。需要运行的代码应该放到一个QObject的子类中,然后将

    2024年02月14日
    浏览(23)
  • Qt Creator使用Clang Format方法

    习惯性的想格式化代码,发现Qt Creator默认居然是没有代码格式化的,只有一个缩进。 Qt Creater中有个插件:beautifier,在\\\"帮助-关于\\\"插件中,开启“Beautifier”即可(会提醒需要重启Qt creator)。 注:Qt Creator安装包中不包含这个格式化工具,它的作用是调用格式化工具进行格式

    2024年02月10日
    浏览(32)
  • QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】

    对于Linux用户,如果Qt是通过“ apt-get”之类的软件包管理器工具安装的,请确保已安装Qt5开发软件包qtbase5-private-dev QtXlsx是一个可以读写Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。该库可用于从头开始生成新的.xlsx文件从现有.xlsx文件中提取数据编

    2024年02月12日
    浏览(34)
  • Qt中信号槽的介绍及使用方法

    目录 三、信号槽 1. 信号槽的概念 2. 函数原型 2.1 自带信号 → 自带槽 2.2 自带信号 → 自定义槽 2.3 自定义信号 3. 参数传递 3.1 全局参数 3.2 信号槽传参 4. 对应关系 4.1 一对多 4.2 多对一 在之前的学习中,可以实现简单的UI效果,但是按钮不能点击。如果让按钮能在用户点击后

    2024年02月09日
    浏览(31)
  • QT图像处理类QImage常见使用方法

    Qt 是一个跨平台的 C++ 库,提供了丰富的图像处理功能,可以用来实现各种图像处理任务,例如图像缩放、旋转、灰度化、二值化等。本文将介绍使用 Qt 实现图像处理的方法,并提供代码示例。 在 Qt 中,可以使用 QImage 类型来加载和保存图像,QImage 支持多种图像格式,例如

    2024年02月03日
    浏览(66)
  • 使用Qt Designer为您的Qt for Python项目创建基于Qt Widgets的图形界面的两种方法

    本页介绍如何使用Qt Designer为您的Qt for Python项目创建基于Qt Widgets的图形界面。Qt Designer是一个图形UI设计工具,可以作为独立的二进制文件(pyside6-designer)提供,也可以嵌入到Qt Creator IDE中。它在Qt Creator中的使用在Using Qt Designer中描述。 设计存储在.ui文件中,这是一种基于

    2024年02月07日
    浏览(33)
  • 实测好用的Linux下打包发布Qt程序的方法(使用linuxdeployqt)

    自己试过能够打包好Qt程序,然后发给别人也能正常使用。 需要在github上下载编译好的 linuxdeployqt-x86_64.AppImage 应用程序文件。 下载后将其改名为linuxdeployqt(方便使用),在终端对其chmod +x 加权限,然后复制到 /usr/local/bin/中(终端能识别该路径下的执行文件) 终端输入 lin

    2024年02月13日
    浏览(31)
  • 使用QTcpServer和QTcpSocket在QT中实现TCP通信的方法

    学习如何在QT中使用QTcpServer和QTcpSocket类实现TCP通信,建立服务器端和客户端,实现可靠的数据传输。

    2023年04月27日
    浏览(28)
  • 【QT】C++和QML使用多线程优化界面切换卡顿的方法

    qt提供了一种声明式语言qml,可以使用一些可视组件以及这些组件之间的交互来描述用户界面,而c++可以只负责后台逻辑的处理,将界面和后台分离开来,由qml来做UI界面,c++负责后端处理,对我个人来说,这样的方式大大的方便了对界面和逻辑的修改和维护; 由于UI界面是工

    2024年01月19日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包