#ifndef FUCTION_BAG_H
#define FUCTION_BAG_H
#include <QObject>
#include <QWidget>
#include<qdebug.h>
#include<qsettings.h>
#include<QTextCodec>
#include"qfile.h"
#include<QObject>
class fuction_Bag
{
private:
template <typename T>
static T Unpacking(T message){
return message;
}
public:
template <typename... Args>
static QVector<QVector<QString>> readINI(QString path,QString start, const Args&... args){ //查询所有ini格式的全部数据,通用函数 path:ini文件路径 start:信息抬头 Args&... args:ini文件中本次需要查询的key
QVector<QVector<QString>> ini_information;
QString bag[] = { (Unpacking(args))... };
for(int i=0;i<sizeof ...(args);i++){
QVector<QString> data;
ini_information.append(data); //每个ini键值开头对应一个QVector
}
qDebug()<<"size"<<sizeof ...(args);
QSettings settings(path, QSettings::IniFormat,0);
QMutableVectorIterator<QVector<QString>> Vector_Handel(ini_information);
int size = settings.beginReadArray(start);
qDebug()<<QString::fromUtf8("ini文件抬头包含下的数列总数,以及ini文件路径,和数列抬头名称")<<size<<path<<start;
for (int i = 0; i < size;i++) { //遍历全部ini抬头下的数列
settings.setArrayIndex(i);
Vector_Handel.toFront();
Vector_Handel.next();
for(int j=0;j<ini_information.count();(j++)){
QVector<QString> meg = Vector_Handel.value();
meg.append(settings.value(bag[j]).toString());
Vector_Handel.setValue(meg);
Vector_Handel.next();
}
}
settings.endArray();
return ini_information;
}
private:
fuction_Bag(){};
};
#endif // FUCTION_BAG_H