当前位置: 首页 > news >正文

7:QT加载保存参数(读写日志)

方法一:

.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)
{//strQString  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_OBJECTpublic: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)
{//arg1ModelMartchParam.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_OBJECTpublic: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

相关文章:

  • 5 分钟速通密码学!
  • List<Integer> list=new ArrayList<>()
  • Nginx stub_status 指南从启用到监控落地的全流程详解
  • 廉价却有效?ESD防护中的电容
  • 企业批量处理刚需PrintPDF 网络财务办公打印 网页到 Office 一键转 PDF
  • 【PhysUnits】10 减一操作(sub1.rs)
  • css五边形
  • 无需会员可一键转换
  • 【go】多线程编程如何识别和避免死锁,常见死锁场景分析,pprof使用指引
  • 【RK3588新品】嵌入式人工智能实验箱EDU-AIoT ELF 2发布
  • 物联网代理暴利逻辑拆解:格行随身WiFi三网切换技术实战分析
  • 日常效率工具【Tools】【持续更新】
  • Spring Cloud Gateway 微服务网关实战指南
  • 力扣48 .旋转图像 (最简单的方法)
  • 深度学习损失“三位一体”——从 Fisher 的最大似然到 Shannon 的交叉熵再到 KL 散度,并走进 PET·P-Tuning微调·知识蒸馏的实战
  • AI开发 | Web API框架选型-FastAPI
  • 机器学习——支持向量机(SVM)
  • 机器学习第二十七讲:Kaggle → 参加机器学习界的奥林匹克
  • QT之INI、JSON、XML处理
  • mac 安装 mysql 和 mysqlshell
  • 国外的服务器网站/深圳百度搜索排名优化
  • ip查询网站备案查询系统/做一个网站
  • 东莞疫情政策/seo优化上首页
  • 学校网站建设用哪个系统/健康码防疫核验一体机
  • 如何制作网站板块/哪个平台可以免费推广
  • 上线了做的网站可以登陆/如何做网站优化