QSettings + INI 笔记
一、初始化
// 创建/打开INI配置文件QSettingssettings("config.ini",QSettings::IniFormat);
二、基础读写
| 操作 | 代码示例 | 说明 |
|---|
| 写入 | settings.setValue("组/键", 值); | 支持int/bool/QString等 |
| 读取(带默认值) | settings.value("组/键", 默认值).toXXX(); | 需指定类型(toInt/toString等) |
// 示例:读写settings.setValue("Window/width",800);// 写intw=settings.value("Window/width",1024).toInt();// 读
三、使用技巧
1. 分组管理
settings.beginGroup("Window");// 进入分组settings.setValue("width",800);settings.endGroup();// 退出分组
2. 数组存储
// 写数组settings.beginWriteArray("recentFiles");for(inti=0;i<files.size();i++){settings.setArrayIndex(i);settings.setValue("path",files[i]);}settings.endArray();// 读数组intsize=settings.beginReadArray("recentFiles");for(inti=0;i<size;i++){settings.setArrayIndex(i);QString p=settings.value("path").toString();}settings.endArray();
3. 配置文件路径
// 1. 应用目录(便携):./config.ini// 2. 系统配置目录(标准):QString path=QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)+"/config.ini";// 3. 绝对路径:D:/app/config.ini
四、示例
classAppConfig{public:staticAppConfig&instance(){staticAppConfig c;returnc;}voidload(){// 加载配置QSettingss("config.ini",QSettings::IniFormat);windowW=s.value("Window/width",800).toInt();autoSave=s.value("General/autosave",true).toBool();}voidsave(){// 保存配置QSettingss("config.ini",QSettings::IniFormat);s.setValue("Window/width",windowW);s.setValue("General/autosave",autoSave);s.sync();// 立即写入}// 配置项intwindowW=800;boolautoSave=true;private:AppConfig()=default;// 单例私有化构造};
五、常用操作
settings.contains("Window/width");// 检查键是否存在settings.remove("Window/width");// 删除键/分组settings.allKeys();// 获取所有键settings.clear();// 清空所有配置settings.sync();// 立即保存(默认析构时保存)
六、注意事项
- 路径分隔用
/,跨平台通用 - 中文直接支持UTF-8,无需额外处理
- 读取时必须指定类型(toInt/toString等)
总结
- 核心初始化:
QSettings settings("config.ini", QSettings::IniFormat) - 核心操作:
setValue()写、value(键, 默认值).toXXX()读 - 关键技巧:分组管理、数组存储、单例封装,
sync()立即保存