Qt中用類QSettings讀寫配置文件ini

本文主要總結在Qt中使用簡單配置文件QSetting來存儲和讀取對應內容。其中,QSettings有限制,只能存儲段-鍵值對模式,如果需要更復雜業務,需要進行嵌套或者選擇xml、json等配置文件。

一、原理講解

類QSettings是Qt自帶的,主要有兩個功能,分別是創建讀寫配置文件*.ini、讀寫註冊表。本文主要講解的是讀寫配置文件*.ini作用。

1.1創建或打開配置文件*.ini(QSettings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR);)

//創建和打開配置文件
    QSettings *settingWrite=new QSettings(QString("setting.ini"),QSettings::IniFormat);  //打開配置文件,不是註冊表

1.2寫配置文件*.ini(void setValue(const QString &key, const QVariant &value);)

//寫配置文件
    settingWrite->setValue(QString("段1/key1"),QString("這是段1值1"));   //設置段、鍵值對,如果段不存在,則要加一個斜槓/創建
    settingWrite->setValue(QString("段1/key2"),QString("這是段1值2"));
    settingWrite->setValue(QString("段2/key1"),QString("這是段2值1"));

1.3讀配置文件*.ini(QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;)

//讀配置文件
    QString section1Value2 = settingRead->value(QString("段1/key2")).toString();   //設置段、鍵值對
    QString section2Value1 = settingRead->value(QString("段2/key1")).toString();   //設置段、鍵值對

二、完整示例代碼

拖拽界面、widget.h、widget.cpp、main.cpp

拖拽界面

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

private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QSettings>
#include <QDebug>

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

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

void Widget::on_pushButton_clicked()
{
    ui->label->setText(QString("鍵%1").arg(rand()));
    ui->label->setFixedWidth(150);
    ui->lineEdit->setText(QString("值%1").arg(rand()));
}



void Widget::on_pushButton_2_clicked()
{
    //創建和打開配置文件
    QSettings *settingWrite=new QSettings(QString("setting.ini"),QSettings::IniFormat);  //打開配置文件,不是註冊表

    //寫配置文件
    settingWrite->setValue(QString("段1/key1"),QString("這是段1值1"));   //設置段、鍵值對,如果段不存在,則要加一個斜槓/創建
    settingWrite->setValue(QString("段1/key2"),QString("這是段1值2"));
    settingWrite->setValue(QString("段2/key1"),QString("這是段2值1"));

    //釋放內存
    delete settingWrite;
    settingWrite=nullprt;
}

void Widget::on_pushButton_3_clicked()
{
    //創建和打開配置文件
    QSettings *settingRead=new QSettings(QString("setting.ini"),QSettings::IniFormat);  //打開配置文件,不是註冊表

    //讀配置文件
    QString section1Value2 = settingRead->value(QString("段1/key2")).toString();   //設置段、鍵值對
    QString section2Value1 = settingRead->value(QString("段2/key1")).toString();   //設置段、鍵值對

    qDebug()<<"section1Value2=="<<section1Value2<<"section2Value1=="<<section2Value1;
    ui->label->setText(QString("/段1/key2"));
    ui->lineEdit->setText(section1Value2);

    //釋放內存
    delete settingRead;
    settingRead=nullprt;
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

 

 

參考內容:

https://blog.csdn.net/qq_33485434/article/details/80483883

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章