方法一:
.h
#ifndef IOPARAMETERS_H
#define IOPARAMETERS_H
#define FILE_ADDRESS "./data/config.ini"
#include <QString>
#include <QVariant>
struct ModelMartch
{
double minScore ; //最小得分
double overLap ; //重叠度
};
void SaveSetting(QString FileAddress,QString Group, QString key , QVariant value);
//引用传参
void LoadSetting(QString FileAddress,QString Group, QString key, QVariant &value);
//封装一个函数
void WriteLog(QString ErrorType, QString str);
#endif // IOPARAMETERS_H
.cpp
#include "ioparameters.h"
#include <qsettings.h>
#include <QDateTime>
#include <QFile>
#include <QTextStream>
#include <qdebug.h>
void SaveSetting(QString FileAddress,QString Group, QString key , QVariant value)
{
QSettings settings(FileAddress,QSettings::IniFormat);
settings.beginGroup(Group);
settings.setValue(key,value);
settings.endGroup();
}
//组键值
void LoadSetting(QString FileAddress,QString Group, QString key, QVariant &value)
{
QSettings settings(FileAddress,QSettings::IniFormat);
settings.beginGroup(Group);
value=settings.value(key);
settings.endGroup();
}
void WriteLog(QString ErrorType, QString str)
{
//str
QString strToWrite= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
strToWrite.append(QString(" %1 %2 \n").arg(ErrorType).arg(str));
//QFile 文件
QFile FileName1("./data"); //需要判断有误存在
if(!FileName1.exists())
{
//创建文件夹
qDebug()<<"Enter Open Failed 001";
return;
}
// QFile FileName2("./data/B.txt"); //"./data/B.txt" 可以自动生成
// if(!FileName2.open(QFile::WriteOnly))
// {
// qDebug()<<"Enter Open Failed 002";
// return;
// }
//开始 文本流
// QTextStream Stream01(&FileName2); //文本流对象
// Stream01 <<strToWrite; //写入 字符串
// Stream01.flush();
// FileName2.close(); //文件 关闭
QFile f("./data/B.txt");
if(!f.open(QFile::ReadOnly))
{
qDebug() << "Open Failed ";
return;
}
QTextStream in(&f);
QString s;
s = in.readLine(); //把这一行读完
qDebug() << "1 :+++++++"<<s;
s = in.readLine(); //把这一行读完
qDebug() <<"2 :+++++++"<< s;
f.close();
}
主函数.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <ioparameters.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
ModelMartch ModelMartchParam;
private slots:
void on_doubleSpinBox_score_valueChanged(double arg1);
void on_doubleSpinBox_overlap_valueChanged(double arg1);
void on_pB_TestWriteLog_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
主函数.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//自动加载
QVariant ValueMinScore, ValueOverlap;
LoadSetting(FILE_ADDRESS,"ModelMarch","minScore",ValueMinScore);
LoadSetting(FILE_ADDRESS,"ModelMarch","overLap",ValueOverlap);
ModelMartchParam.minScore=ValueMinScore.toDouble();
ModelMartchParam.overLap=ValueOverlap.toDouble();
ui->doubleSpinBox_score->setValue(ModelMartchParam.minScore);
ui->doubleSpinBox_overlap->setValue(ModelMartchParam.overLap);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_doubleSpinBox_score_valueChanged(double arg1)
{
//arg1
ModelMartchParam.minScore=arg1; //结构体成员
//保存参数
SaveSetting(FILE_ADDRESS,"ModelMarch","minScore",QVariant(ModelMartchParam.minScore));
//writelolg
}
void MainWindow::on_doubleSpinBox_overlap_valueChanged(double arg1)
{
ModelMartchParam.overLap=arg1;
SaveSetting(FILE_ADDRESS,"ModelMarch","overLap",QVariant(ModelMartchParam.overLap));
}
void MainWindow::on_pB_TestWriteLog_clicked()
{
WriteLog("warning", QString::fromLocal8Bit("相机打开成功"));
}
方法二:
.h
#ifndef MY_QSETTINGS_H
#define MY_QSETTINGS_H
#include <QFile>
#include <QTextStream>
#include <QSettings>
#include <QStringList>
void SaveSetting(QString fileName, QString group, QString key, QVariant value);//组键值
void LoadSetting(QString fileName, QString group, QString key, QVariant &value);//组键,取得值
void readKeysFromConfigFile(const QString& fileName, const QString& groupName, QStringList &keysList);//获取一个组下所有key
void removeKeyFromGroup(const QString& fileName, const QString& group, const QString& key);//在指定的组下删除指定的键和值。
void WriteLog(QString fileName,QString logText);//写日志
void LoadLog(QString fileName,QString &logText);//读日志
#endif // MY_QSETTINGS_H
.cpp
#include "My_QSettings.h"
#include <QDebug>
void SaveSetting(QString fileName, QString group, QString key, QVariant value)
{
QSettings s(fileName,QSettings::IniFormat);
if(group != "")
{
s.beginGroup(group);
}
s.setValue(key,value);//
if(group != "")
{
s.endGroup();
}
}
//组键,取得值
void LoadSetting(QString fileName, QString group, QString key, QVariant &value)
{
QSettings settings(fileName, QSettings::IniFormat);
if (group != "") {
settings.beginGroup(group);
}
value = settings.value(key);//
if (group != "") {
settings.endGroup();
}
}
//获取一个组下所有key
void readKeysFromConfigFile(const QString &fileName, const QString &groupName, QStringList &keysList)
{
QSettings settings(fileName, QSettings::IniFormat);
settings.beginGroup(groupName);
keysList = settings.childKeys();
}
//在指定的组下删除指定的键和值。
void removeKeyFromGroup(const QString &fileName, const QString &group, const QString &key)
{
QSettings settings(fileName, QSettings::IniFormat);
settings.beginGroup(group);
settings.remove(key);
settings.endGroup();
}
//写日志
void WriteLog(QString fileName, QString logText)
{
QFile file(fileName);
if(file.open(QIODevice::WriteOnly | QIODevice::Append))
{
QTextStream REN(&file);
REN<< logText<< endl;
//qDebug() << value;
}else {
qDebug() << QString::fromLocal8Bit("日志写入失败");
}
file.flush();
file.close();
}
//读日志
void LoadLog(QString fileName,QString &logText)
{
QFile file(fileName);
QTextStream stream(&file);
stream.setCodec("UTF-8");
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while (!stream.atEnd()) {
logText += stream.readLine();
logText +="\n";
}
file.flush();
file.close();
}else {
qDebug() << QString::fromLocal8Bit("日志读取失败");
logText = QString::fromLocal8Bit("日志读取失败");
}
}
主函数.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <src/QSettings/My_QSettings.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pB_Save_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
主函数.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString filePath = ".\\date\\Student.txt";
QVariant vName ;
QVariant vAge ;
LoadSetting(filePath,"StudentMessage","name",vName);
LoadSetting(filePath,"StudentMessage","age",vAge);
ui->lineEdit->setText(vName.toString());
ui->spinBox->setValue(vAge.toInt());
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pB_Save_clicked()
{
QString filePath = ".\\date\\Student.txt";
SaveSetting(filePath,"StudentMessage","name",QVariant(ui->lineEdit->text()));
SaveSetting(filePath,"StudentMessage","age",QVariant(ui->spinBox->value()));
}
附录:
1
2