Qt -- QSetting类/ini配置文件的读写操作

在开发中,将一些关键的东西写入或者读取配置文件中,本文主要就是使用了QSettings的setValue和value。

QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。 

用户通常希望应用程序在会话中记住其设置(窗口大小和位置,选项等)。此信息通常存储在Windows上的系统注册表中,以及macOS和iOS 上的属性列表文件中。在Unix系统上,在没有标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。在项目中,有时需要在程序之外设定一些初始值,一般这些初始值会写入到配置文件中。

ini配置文件格式:ini文件由组、键、值组成。


Qt是通过QSettings类来操作配置文件的。 QSettings的API基于QVariant,允许您以最少的工作量保存大多数基于值的类型,例如QStringQRectQImage

指定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

 

posted @   手磨咖啡  阅读(4418)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示