【QT】读写.ini配置文件的程序实现

简介: 【QT】读写.ini配置文件的程序实现

前言

我们在设计软件得时候很多时候会用到设置得保存,例如用户使用最多得串口助手,当设置好串口得波特率、校验位等等设置过后用户肯定是希望下次打开得时候能恢复昨天工作调试得配置而不是打开软件过后还需要再重复设置一遍,所以我们就需要学习一下ini文件配置读写,其实通过文件读写得方式也是可以实现相同得效果,但是QT给我们提供了ini文件读写得接口,在配置设置得过程中为我们提供了很多便利,接下来我们看看效果。

思路

当我们打开软件得时候首先读取ini配置文件中是否有存在得设置,如果没有得话我们就设置默认得程序配置,但读取到配置文件设置得时候就将该设置放置到该控件得数值,但我们软件进行关闭得时候将页面上得设置写入到ini文件中,下面是具体得实现代码。

iniConfig.cpp

#include "iniconfig.h"
iniConfig::iniConfig()
{
}
// 用户需要修改保存配置.INI文件得位置得时候修改这行地址,相对于写入函数也需要修改,但然这个封装还可以继续优化将文件位置也提供给用户设置
// QString m_sProjectPath = QCoreApplication::applicationDirPath();//获取exe文件所在目录
void iniConfig::writeIniValue(QString key_root, QString key, QString value)
{
    QString m_sProjectPath = QCoreApplication::applicationDirPath();//获取exe文件所在目录
    //第二个参数表明是ini文件格式
    QSettings *configIni = new QSettings (QString("%1/" +key_root ).arg(m_sProjectPath),QSettings::IniFormat);
    configIni->setIniCodec(QTextCodec::codecForName("System"));//确保键值可以是中文
    configIni->beginGroup(key_root);
    configIni->setValue(key, value);
    //    configIni->setValue("Directory", m_sProjectPath);
    configIni->endGroup();
    delete configIni;
}
// 用户需要修改保存配置.INI文件得位置得时候修改这行地址
// QString m_sProjectPath = QCoreApplication::applicationDirPath();//获取exe文件所在目录
QString iniConfig::getIniValue(QString key_root, QString key)
{
    QString m_sProjectPath = QCoreApplication::applicationDirPath();//获取exe文件所在目录
    QSettings *configIni = new QSettings (QString("%1/"+ key_root ).arg(m_sProjectPath),QSettings::IniFormat);
    configIni->setIniCodec(QTextCodec::codecForName("System"));//确保读出来的中文键值可以正常解析
    QString value = configIni->value(key_root+ "/" + key,QString("")).toString();
    //    QString Directory= configIni->value("Config/Directory",m_sProjectPath).toString();
    delete configIni;
    return value;
}

iniConfig.h

#ifndef INICONFIG_H
#define INICONFIG_H
#include <QString>
#include <QSettings>
#include <QTextCodec>
#include <QCoreApplication>
class iniConfig
{
public:
    iniConfig();
    QString getIniValue(QString key_root, QString key);
    void writeIniValue(QString key_root, QString key, QString value);
};
#endif // INICONFIG_H

使用方法

刚刚在思路得时候介绍了软件得打开和关闭其实和窗口类得构造和析构函数相对于,所以我们只需要在这两个函数中添加读和写就完成了我们得效果。

iniConfig *ini = new iniConfig();
// 读取上一次地址配置getIniValue第一个数值是指配置文件名字,第二个是配置参数
  ui->edit_ip->setText(ini->getIniValue("Config.ini","ADDRESS"));
  ui->edit_port->setText(ini->getIniValue("Config.ini","PORT"));
// 保存地址配置 writeIniValue第一个参数配置文件名然后是参数最后是内容
  ini->writeIniValue("Config.ini","ADDRESS",ui->edit_ip->text());
  ini->writeIniValue("Config.ini","PORT",ui->edit_port->text());


相关文章
|
7月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
475 0
|
4月前
|
存储
Qt使用 QSetting 对 ini 配置文件进行操作
Qt使用 QSetting 对 ini 配置文件进行操作
328 0
|
5月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
514 3
|
3月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
7月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
5月前
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
173 6
|
6月前
|
XML 存储 JSON
技术笔记:Qt基础之配置文件(QSettings)
技术笔记:Qt基础之配置文件(QSettings)
415 0
|
6月前
Qt MainWindow 程序主窗口
Qt MainWindow 程序主窗口
|
7月前
|
人工智能 编译器 C++
新版Qt6快速打包程序脚本
不知道啥时候Qt更新了,目前是6.7.0,项目默认的生成路径改了, 从 项目目录的同级目录 改为了 项目目录中的build目录, 之前的脚本也用不了了,所以用AI更新了一下脚本, 希望能帮到大家,方便快速打包程序到桌面。
173 9