QT 保存软件配置和设置(*.config)

准备工作

1、新建一个工程,并在ui界面放置一个checkbox 和 lineEdit插件
2、使用二进制流把数据存入*.config 文件,能够有效保护数据不被修改
3、这里单纯保存一个bool类型数据,还有一个QString数据,可以按照自己的需求重写

explicit AppConfig(bool teVisible, QString teData, QObject *parent = nullptr);

具体操作步骤

1.在 “项目” 右键 > add new > C++ > C++ Class > Choose(Object name:Appconfig, Base class:QObject)
项目内容
2.修改 “appconfig.h” 文件

#ifndef APPCONFIG_H
#define APPCONFIG_H

#include <QObject>

class AppConfig : public QObject
{
    Q_OBJECT

    bool m_isChecked;
    QString m_dataSave;
    
    bool m_isValid;
    bool restore();
    
public:
    explicit AppConfig(QObject *parent = nullptr);
    explicit AppConfig(bool teVisible, QString teData, QObject *parent = nullptr);
    
    bool isChecked();
    QString dataSave();
    
	bool store();
	bool isValid();

signals:

public slots:
};

#endif // APPCONFIG_H

3.修改 "appconfig.cpp"文件

#include "appconfig.h"
#include<QFile>
#include<QDataStream>
#include<QApplication>

AppConfig::AppConfig(QObject *parent) : QObject(parent)
{
    m_isValid = restore();
}

AppConfig::AppConfig(bool teVisible, QString teData, QObject *parent)
{
    m_isChecked = teVisible;
    m_dataSave = teData;
    m_isValid = true;
}

bool AppConfig::restore()
{
    bool ret = true;
    QFile file(QApplication::applicationDirPath() + "/app.config");
    if (file.open(QIODevice::ReadOnly))
    {
        QDataStream in(&file);
        in.setVersion(QDataStream::Qt_5_12);
        in >> m_isChecked;
        in >> m_dataSave;
        file.close();
    }
    else {
        ret = false;
    }
    return ret;
}

bool AppConfig::store()
{
    bool ret = true;
    QFile file(QApplication::applicationDirPath() + "/app.config");
    if (file.open(QIODevice::WriteOnly))
    {
        QDataStream out(&file);
        out.setVersion(QDataStream::Qt_5_12);
        out << m_isChecked;
        out << m_dataSave;
        file.close();
    }
    else {
        ret = false;
        return ret;
    }
    return ret;
}

bool AppConfig::isChecked()
{
    return m_isChecked;
}

bool AppConfig::isValid()
{
    return m_isValid;
}

QString AppConfig::dataSave()
{
    return m_dataSave;
}

4.在 "mainwindow.cpp"使用

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

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

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

void MainWindow::configLoad()
{
    AppConfig config;
    if (config.isValid())
    {
        bool isChecked = config.isChecked();
        QString info = config.dataSave();
        ui->checkBox->setChecked(isChecked);
        ui->lineEdit->setText(info);
    }
}

void MainWindow::configSave()
{
    bool isChecked = ui->checkBox->isChecked();
    QString info = ui->lineEdit->text();
    AppConfig config(isChecked, info);
    config.store();
    delete ui;
}

5.OK,跑起来看看效果
最终结果
debug出来的文件信息。
在这里插入图片描述

写在最后

本博文只是我在学习QT的过程中所做的笔记,方便以后查阅实现过程。资料均来自网上,如果有侵权请联系我删除,谢谢。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值