解决QSettings读取中文乱码
    QString sConfigFile = sDataDir + QDir::separator() + "config" + QDir::separator() + "Info.ini";QSettings configFile(sConfigFile, QSettings::IniFormat);configFile.setIniCodec("utf-8");
QSettings存储格式
- NativeFormat:使用操作系统推荐的存储方式,如Windows的注册表、macOS的plist文件等。
- IniFormat:将数据保存为INI格式的文本文件。
- CustomFormat:允许指定自定义的存储格式(如XML、JSON等),但需配合自定义的QSettings backend实现。
在Windows平台,当使用QSettings::NativeFormat时,路径名必须使用"/"作为分隔符
其他方式(未验证)
通过初始化 QTextCodec 来影响整个 Qt 应用程序的编码处理。在应用程序的 main() 函数中,设置默认的文本编解码器为 UTF-8 可以帮助解决乱码问题
#include <QTextCodec>  int main(int argc, char *argv[]) {  QCoreApplication a(argc, argv);  QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));  // ... 其他代码 ...  return a.exec();  
}
QSettings遍历子组
[General]  
AppName=MyApp  
Version=1.0  [UserSettings]  
Username=User123  
Password=pass123  
Language=en  [Advanced]  
DebugMode=false  
LogFile=log.txt  
MaxConnections=10
#include <QCoreApplication>  
#include <QSettings>  
#include <QDebug>  int main(int argc, char *argv[])  
{  QCoreApplication a(argc, argv);  // 初始化QSettings对象,指向example.ini文件  QSettings settings("example.ini", QSettings::IniFormat);  // 获取所有的子组(或称为"sections"或"groups")  QStringList groups = settings.childGroups();  // 遍历所有子组  for (const QString &group : groups) {  // 切换到当前子组  settings.beginGroup(group);  // 打印子组名  qDebug() << "[" << group << "]";  // 获取当前子组下的所有键  QStringList keys = settings.allKeys();  // 遍历所有键,并打印其值  for (const QString &key : keys) {  // 读取并打印键值对  qDebug() << key << "=" << settings.value(key).toString();  }  // 结束当前子组,返回到根组  settings.endGroup();  // 打印一个空行作为分隔符  qDebug() << "";  }  return a.exec();  
}