Qt -- QSetting类/ini配置文件的读写操作
在开发中,将一些关键的东西写入或者读取配置文件中,本文主要就是使用了QSettings的setValue和value。
QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。
用户通常希望应用程序在会话中记住其设置(窗口大小和位置,选项等)。此信息通常存储在Windows上的系统注册表中,以及macOS和iOS 上的属性列表文件中。在Unix系统上,在没有标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。在项目中,有时需要在程序之外设定一些初始值,一般这些初始值会写入到配置文件中。
ini配置文件格式:ini文件由组、键、值组成。
Qt是通过QSettings类来操作配置文件的。 QSettings的API基于QVariant,允许您以最少的工作量保存大多数基于值的类型,例如QString,QRect和QImage。
指定QSettings使用的存储格式:
配置文件写操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void MainWindow::writeConfig() { //创建ini配置文件 iniFile = new QSettings( "sysConfig.ini" , QSettings::IniFormat); //组开始 iniFile->beginGroup(tr( "Tom" )); //设置键值对 iniFile->setValue(tr( "age" ), tr( "23" )); iniFile->setValue(tr( "gender" ), tr( "male" )); iniFile->setValue(tr( "id" ), tr( "00001" )); //获取当前组 QString group=iniFile->group(); qDebug().noquote()<< "group:" <<group; //组结束 iniFile->endGroup(); iniFile->beginGroup(tr( "Helen" )); iniFile->setValue(tr( "age" ), tr( "20" )); iniFile->setValue(tr( "gender" ), tr( "female" )); iniFile->setValue(tr( "id" ), tr( "00002" )); iniFile->endGroup(); } |
配置文件读操作 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | void MainWindow::readConfig() { //获取配置文件名 QString fileName=iniFile->fileName(); qDebug().noquote()<< "fileName:" <<fileName; //判断键是否存在 bool key=iniFile->contains( "Helen/age" ); qDebug().noquote()<< "Helen/age is " <<key; //移除键 iniFile-> remove ( "Helen/age" ); //读取键值对 int age = iniFile->value( "Tom/age" ).toInt(); QString gender = iniFile->value( "Tom/gender" ).toString(); QString id = iniFile->value( "Tom/id" ).toString(); qDebug()<<age<<gender<<id; } |
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //test QString INIPath = "D://" ; QString ImageName = "" ; // 获取当前时间 QDateTime time = QDateTime::currentDateTime(); QString dateTime = time .toString( "MMddhhmmsszzz" ); QString str= QString( "Data%1.dat" ).arg(dateTime); //保存INI文件 //qt写入ini配置文件 QSettings settings(INIPath + "PicTime.ini" ,QSettings::IniFormat); //创建ini配置文件 settings.beginGroup( "TimeRec" ); //组开始 settings.setValue(dateTime,QDateTime::currentDateTime().toString( "yyyyMMdd-hhmmsszzz" )); //设置键值任务 settings.endGroup(); //组结束 |
https://blog.csdn.net/mars_xiaolei/article/details/97385548
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!