#include "ConfigFiles.h" #include #include #include #include ConfigFiles::ConfigFiles(QObject *parent) : QObject(parent) { } /** * 读取配置值,若读取失败则使用默认值并写入配置文件 * @param group 配置组名 * @param key 配置项名 * @param defaultValue 读取失败时使用的默认值 * @return 读取到的值(或默认值) */ template T ConfigFiles::readAndSetDefault(const QString &Path ,const QString& group, const QString& key, const T& defaultValue) { // 检查配置文件是否存在 QSettings SystemConfig(Path, QSettings::IniFormat); SystemConfig.setIniCodec("UTF-8"); // 尝试UTF-8编码 QFileInfo configCheck(Path); bool fileExists = configCheck.exists() && configCheck.isFile(); // 读取配置值 SystemConfig.beginGroup(group); QVariant value = SystemConfig.value(key); SystemConfig.endGroup(); // 判断是否读取成功 if (fileExists && value.isValid()) { // 读取成功,返回转换后的值 return value.value(); } else { // 读取失败(文件不存在或键不存在),使用默认值并写入配置 if (isDebug) { qDebug() << "配置项" << group << "/" << key << "读取失败,使用默认值:" << defaultValue; } // 写入默认值到配置文件 SystemConfig.beginGroup(group); SystemConfig.setValue(key, defaultValue); SystemConfig.endGroup(); SystemConfig.sync(); // 立即同步到文件 return defaultValue; } } void ConfigFiles::SystemConfig(){ QFileInfo checkFile("./ProgramConfig.ini"); QSettings File("./ProgramConfig.ini", QSettings::IniFormat); if (checkFile.exists() && checkFile.isFile()) { ConfigurationPath = File.value("System/ConfigurationPath").toString(); if(isDebug) qDebug()<<"配置文件路径:"< 每个 QStringList 为一行的字段 */ QList ConfigFiles::ReadFile_Csv(const QString &filePath){ QList rows; QFile file(filePath); QFileInfo testFile(filePath); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qWarning() << "CSV 打开失败:" << file.errorString()<