QT实现一个简单的添加和使用配置文件的例程,比较实用,文末附源码
QT中,可以使用 QSettings 类来读取和写入 INI 格式的配置文件。INI 文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息,例如用户设置、应用程序选项等。
在程序中新建一个文本输入框显示和修改参数,在configFileInit函数中先判断配置文件是否存在,若不存在,则写入默认配置;若存在配置文件,读取参数的键值,然后在文本输入框显示
关闭程序时,保存文本输入框中的参数值
- 小知识:
点击关闭按钮,QT会调用closeEvent,重写该虚函数即可在关闭程序时进行一些操作(例如再次确认是否关闭,或是保存参数等),这里用来保存参数
首次运行:
config.ini默认在可执行程序同级目录生成,可自行修改配置文件位置
可在输入框修改参数,例如改为192.168.1.99,关闭程序后查看config.ini已修改,再次执行程序,可以看到参数已读取和显示
程序比较简单,附上源码供参考:
MainWindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0,0,800,480);
lineEdit=new QLineEdit(this);
lineEdit->setGeometry(50,50,200,50);
configFileInit();
lineEdit->setText(configString);
}
MainWindow::~MainWindow()
{
}
void MainWindow::closeEvent ( QCloseEvent * e )
{
QSettings *configIniWrite = new QSettings(CONFIG_FILE_PATH_DEFAULT, QSettings::IniFormat);
configIniWrite->setValue("server_ip", lineEdit->text().trimmed());
delete configIniWrite;
e->accept();//不会将事件传递给组件的父组件,即直接关闭程序
}
void MainWindow::configFileInit()
{
QFile configFile;
if (!configFile.exists(CONFIG_FILE_PATH_DEFAULT))
{
qDebug()<<"no config.ini, need create";
//Qt中使用QSettings类读写ini文件
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
QSettings *configIniWrite = new QSettings(CONFIG_FILE_PATH_DEFAULT, QSettings::IniFormat);
//向ini文件中写入内容,setValue函数的两个参数是键值对
//向ini文件的第一个节写入内容,ip节下的第一个参数(即默认参数)
configIniWrite->setValue("server_ip", "192.168.1.15");
configString="192.168.1.15";
//写入完成后删除指针
delete configIniWrite;
}
else
{
QSettings *configIniRead = new QSettings(CONFIG_FILE_PATH_DEFAULT, QSettings::IniFormat);
//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
configString = configIniRead->value("server_ip").toString();
qDebug()<<"read config, server_ip:" + configString;
//读入入完成后删除指针
delete configIniRead;
}
}
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLineEdit>
#include <QDebug>
#include <QFile>
#include <QSettings>
#include <QCloseEvent>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QLineEdit *lineEdit;
QString configString;
virtual void closeEvent(QCloseEvent* event) override;
void configFileInit();
#define CONFIG_FILE_PATH_DEFAULT "./config.ini"
};
#endif // MAINWINDOW_H
读写ini参考:https://blog.csdn.net/qiurisuixiang/article/details/7760828
closeEvent参数:https://blog.csdn.net/bureau123/article/details/113518456