准备工作
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的过程中所做的笔记,方便以后查阅实现过程。资料均来自网上,如果有侵权请联系我删除,谢谢。