目录
ini文件介绍
概念
.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。
格式
一种非常原始的基础形式, 只适合非常非常简单的配置文件
后缀名不一定是".ini",也可以是".cfg",".conf ”等
没有固定的格式
由若干个section 组成,每个section又由多个parameters组成
parameters格式:name = key
section格式:[section]
注释格式:;
最多只能一层嵌套,一旦需要两层嵌套,或需要数组,就力不从心了
ini文件控制
QSettings
QSettings类提供持久的独立于平台的应用程序设置。
用户通常希望应用程序在会话中记住其设置(窗口大小和位置、选项等)。这些信息通常存储在Windows上的系统注册表中,以及macOS和iOS上的属性列表文件中。在Unix系统上,在没有标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。
QSettings是围绕这些技术的抽象,使您能够以可移植的方式保存和恢复应用程序设置。它还支持自定义存储格式。
QSettings的API基于QVariant,允许您以最小的工作量保存大多数基于值的类型,例如QString、QRect和QImage。
如果您只需要一个非持久性的基于内存的结构,可以考虑改用QMap<QString,QVariant>。
读取ini文件
Qt提供了QSettings类可以很方便的读写ini文件.
void MainWindow::readConfig()
{
QString Path = QCoreApplication::applicationDirPath();
QString endPath = Path + "/config.ini";
QFileInfo fileinfo(endPath);
if (!fileinfo.isFile()) {
qDebug() << "文件不存在";
}
QSettings setting(endPath, QSettings::IniFormat);
setting.beginGroup("WB");
QString UUID = setting.value("UUID", "").toString();
QString strVersion = setting.value("Version", "").toString();
QString strInstanceId = setting.value("InstanceId", "").toString();
m_ptrLineEditUUID->setText(UUID);
m_ptrLineEditVersion->setText(strVersion);
m_ptrLineEditInstanceID->setText(strInstanceId);
}
beginGroup:选择哪一个section.
通过关键此查询到对应的字符串内容,可以使用toString转为字符串,也可以使用toInt转为int类型.
写ini文件
void MainWindow::saveConfig()
{
QString Path = QCoreApplication::applicationDirPath();
QString endPath = Path + "/config.ini";
QFileInfo fileinfo(endPath);
if (!fileinfo.isFile()) {
qDebug() << "文件不存在";
}
QSettings setting(endPath, QSettings::IniFormat);
setting.beginGroup("WB");
//读配置文件
//写入配置文件
setting.setValue("UUID", m_ptrLineEditUUID->text());
setting.setValue("Version", m_ptrLineEditVersion->text());
setting.setValue("InstanceId", m_ptrLineEditInstanceID->text());
}
QCoreApplication::applicationDirPath(); 获取当前应用的目录地址,然在应用目录下创建文件从config.ini
QSettings可以直接操作文件.使用setValue就能够直接设置文件内容.
保存内容如下:
[WB]
InstanceId=23333333
UUID=111111
Version=222222