QT:QSettings类,实现界面配置记忆功能

目录

QSettings类的基本使用

示例代码





QSettings类的基本使用


写入配置文件

	//打开配置文件,写入宽高
	//该构造函数使用的参数1:配置文件的路径,参数2:使用ini格式进行读写
    QSettings setting("./config.ini",QSettings::IniFormat);
    setting.setValue("width",this->width());	//对应的键值进行写入数据(这里写入的是程序窗口的宽度)
    setting.setValue("height",this->height());

读取配置文件

    //读取配置文件宽高
    QSettings setting("./config.ini",QSettings::IniFormat);
    int width = setting.value("width").toInt();		//读取文件键值相应的数据
    int height = setting.value("height").toInt();




示例代码

实现过程:程序关闭时,触发关闭事件,关闭事件里将窗口最后的宽和高写入配置文件。
当下一次程序启动,构造函数里读取配置文件的宽高,并进行resize() 调整窗口宽高。

.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void closeEvent(QCloseEvent *event);    //关闭事件

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 

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

    //读取配置文件宽高
    QSettings setting("./config.ini",QSettings::IniFormat);
    int width = setting.value("width").toInt();
    int height = setting.value("height").toInt();

    //如果读取到width和height都为0,说明没有配置,是第一次打开,使用默认宽高
    if(width == 0 && height == 0)
    {
        this->resize(500,500);
    }
    else    //设置为上一次关闭软件时的宽高
    {
        this->resize(width,height);
    }

}

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

//关闭事件
void MainWindow::closeEvent(QCloseEvent *event)
{
    //打开配置文件,写入宽高
    QSettings setting("./config.ini",QSettings::IniFormat);  //在用户当前目录下
    setting.setValue("width",this->width());
    setting.setValue("height",this->height());
}




你可能感兴趣的:(QT)