【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());


相关文章
|
2月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
141 0
|
2月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
6天前
|
XML 存储 JSON
技术笔记:Qt基础之配置文件(QSettings)
技术笔记:Qt基础之配置文件(QSettings)
|
21天前
Qt MainWindow 程序主窗口
Qt MainWindow 程序主窗口
|
2月前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
53 0
|
2月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
91 0
|
2月前
|
人工智能 编译器 C++
新版Qt6快速打包程序脚本
不知道啥时候Qt更新了,目前是6.7.0,项目默认的生成路径改了, 从 项目目录的同级目录 改为了 项目目录中的build目录, 之前的脚本也用不了了,所以用AI更新了一下脚本, 希望能帮到大家,方便快速打包程序到桌面。
64 9
|
2月前
|
开发框架 Linux C++
Qt:强大的跨平台C++应用程序开发框架
Qt:强大的跨平台C++应用程序开发框架
82 3
|
2月前
|
开发框架 编译器 C++
Qt:一个强大的跨平台C++应用程序开发框架
Qt:一个强大的跨平台C++应用程序开发框架
63 1
|
2月前
|
数据可视化
实现Hello Qt 程序
实现Hello Qt 程序