头文件
#include
一、最简单操作
QSettings *minifile; //声明 minifile = new QSettings("./config1.ini", QSettings::IniFormat);//实例化 //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省 minifile->setValue("/para1/first", ""); //写 // /节/键 ,值 qDebug() <<"111"<< minifile->value("/para1/first"); //读
效果:

1、config.ini程序自动创建,不用手动创建
2、ini文件介绍
.ini 文件是Initialization File的缩写,即初始化文件。
INI文件由节、键、值组成。
节
[section]
参数(键=值)
name=value
例如:
[Section1 Name]
KeyName1=value1
KeyName2=value2
…
[Section2 Name]
KeyName21=value21
KeyName22=value22
其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
二、类封装管理
1、声明config.h:
#ifndef CONFIG_H #define CONFIG_H #include
#include
class Config { public: Config(QString qstrfilename = ""); //构建 virtual ~Config(void); //解析 void Set(QString,QString,QVariant); //增,改 QVariant Get(QString,QString); //取值 void clear(); //清除所有 private: QString m_qstrFileName; QSettings *m_psetting; }; #endif // CONFIG_H
2、config.c
#include "config.h" #include
#include
Config::Config(QString qstrfilename) { if (qstrfilename.isEmpty()) { //无文件名,默认Config.ini m_qstrFileName = QCoreApplication::applicationDirPath() + "/Config.ini"; } else { m_qstrFileName = qstrfilename; } m_psetting = new QSettings(m_qstrFileName, QSettings::IniFormat); // qDebug() << m_qstrFileName; } Config::~Config() { delete m_psetting; m_psetting = 0; } void Config::Set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue) { m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue); } QVariant Config::Get(QString qstrnodename,QString qstrkeyname) { QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname)); return qvar; } void Config::clear() { m_psetting->clear(); }
3、使用时添加头文件”config.h”
void MainWindow::saveConfig() //存 { Config().clear(); //清除 Config().Set("serialconfig","BaudRate",ui->BaudRateBox->currentIndex()); Config().Set("serialconfig","DataBit",ui->DataBitsBox->currentIndex()); Config().Set("serialconfig","Parity",ui->ParityBox->currentIndex()); Config().Set("serialconfig","stopbit",ui->stopbitBox->currentIndex()); Config().Set("serialconfig","flow",ui->flowBox->currentIndex()); for(int i=0;i
txcomboBox->count();i++){ Config().Set("sendData",QString::number(i),ui->txcomboBox->itemText(i)); } for (int j = 0; j < ui->listWidget->count();j++){ Config().Set("fixedData",QString::number(j),ui->listWidget->item(j)->text()); } } void MainWindow::readConfig() { //读取 ui->BaudRateBox->setCurrentIndex(Config().Get("serialconfig","BaudRate").toInt()); ui->DataBitsBox->setCurrentIndex(Config().Get("serialconfig","DataBit").toInt()); ui->ParityBox->setCurrentIndex(Config().Get("serialconfig","Parity").toInt()); ui->stopbitBox->setCurrentIndex(Config().Get("serialconfig","stopbit").toInt()); ui->flowBox->setCurrentIndex(Config().Get("serialconfig","flow").toInt()); QString buff; for(int i = 0;i < MAXITEMCOUNT;i++){ buff = Config().Get("sendData",QString::number(i)).toString(); if(buff.isEmpty()){ break; }else{ ui->txcomboBox->addItem(buff); } } for(int j = 0;j < MAXITEMCOUNT;j++){ buff = Config().Get("fixedData",QString::number(j)).toString(); if(buff.isEmpty()){ break; }else{ ui->listWidget->addItem(buff); } } }
效果:

参考: https://blog.csdn.net/qiurisuixiang/article/details/
https://blog.csdn.net/_/article/details/
QString的arg方法:https://blog.csdn.net/xu/article/details/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222797.html原文链接:https://javaforall.net
