QT创建和使用INI配置文件

单独把配置文件写成一个类的好处是,在需要用到读写配置的类中只需要把配置的头文件包含进来就直接可以调用其方法,下面就是读写配置的代码,设置完毕重启生效。

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

public slots:
    void SaveNetParametersSlot();
private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "ini_file.h"//只要将头文件包含进来就可以调用类的方法
#include <QMessageBox>

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

    ui->lineEdit->setText(INI_File().GetIp());
    ui->lineEdit_2->setText(INI_File().GetPort());
    ui->lineEdit_3->setText(INI_File().GetUserName());
    ui->lineEdit_4->setText(INI_File().GetPassword());

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(SaveNetParametersSlot()));
}

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

void Widget::SaveNetParametersSlot()
{
    if(ui->lineEdit->text().isEmpty()
        || ui->lineEdit_2->text().isEmpty()
        || ui->lineEdit_3->text().isEmpty()
        || ui->lineEdit_4->text().isEmpty())
    {
        QMessageBox::information(NULL,"提示","参数有空值!");
        return;
    }

    INI_File().SetIp(ui->lineEdit->text());
    INI_File().SetPort(ui->lineEdit_2->text());
    INI_File().SetUserName(ui->lineEdit_3->text());
    INI_File().SetPassword(ui->lineEdit_4->text());
}

ini_file.h

#ifndef INI_FILE_H
#define INI_FILE_H

#include <QString>
#include <QSettings>

class INI_File
{
public:
    INI_File();
    virtual ~INI_File();

    void CreateFile(QString qstrFilePath, QString qstrFileName);

    void SetIp(QString qstrIp);
    QString GetIp();

    void SetPort(QString qstrPort);
    QString GetPort();

    void SetUserName(QString qstrUserName);
    QString GetUserName();

    void SetPassword(QString qstrPassword);
    QString GetPassword();
private:
    QString m_qstrFileName;
    QSettings *m_psetting;
};

#endif // INI_FILE_H

ini_file.cpp

#include "ini_file.h"
#include <QtCore/QtCore>
#include <QFile>
#include <QDebug>

INI_File::INI_File()
{
    m_qstrFileName = QCoreApplication::applicationDirPath() + "/Config.ini";

    qDebug()<<"m_qstrFileName: "<<m_qstrFileName;

    //"Config.ini"配置文件,文件存在则打开,不存在则创建
    m_psetting = new QSettings(m_qstrFileName,QSettings::IniFormat);
}

INI_File::~INI_File()
{
    delete m_psetting;
    m_psetting = NULL;
}

void INI_File::SetIp(QString qstrIp)
{
    m_psetting->setValue("/NetParameters/ip",qstrIp);
}

void INI_File::SetPort(QString qstrPort)
{
    m_psetting->setValue("/NetParameters/port",qstrPort);
}

QString INI_File::GetPort()
{
    return m_psetting->value("/NetParameters/port").toString();
}

void INI_File::SetUserName(QString qstrUserName)
{
    m_psetting->setValue("/NetParameters/user",qstrUserName);
}

QString INI_File::GetUserName()
{
    return m_psetting->value("/NetParameters/user").toString();
}

void INI_File::SetPassword(QString qstrPassword)
{
    m_psetting->setValue("/NetParameters/password",qstrPassword);
}

QString INI_File::GetPassword()
{
    return m_psetting->value("/NetParameters/password").toString();
}

QString INI_File::GetIp()
{
    return m_psetting->value("/NetParameters/ip").toString();
}

界面如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36391817/article/details/80613104
今日推荐