.ini文件介绍以及QSettings写入、读取ini文件

先介绍一下ini文件:

.ini 文件是一种初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了

.ini文件使用中发现的一些优点:
1、可以多个程序同时操作一个ini文件,不用担心有问题怎么滴
2、有根结点和关键字,类似于XML,方便查找

ini文件读取方式

    QSettings settings(strFilePath, QSettings::IniFormat);				// strFilePath 文件所在路径,比如"../***/****/****.ini";
	settings.setIniCodec("UTF8");										// 设置编码方式  --->解析ini配置文件中的文字问题
    settings.beginGroup("DATAS");										// 从根结点DATAS开始查找关键字
    QString strValue1 = settings.value("key").toString(); 	            // 从关键字key中取数据
    // QString strValue1 = settings.value("DATAS/key", "").toString();
    settings.endGroup();

ini文件写入方式

    QSettings settings(strFilePath, QSettings::IniFormat);				// strFilePath 文件所在路径,比如"../***/****/****.ini";
    settings.beginGroup("DATAS");										// 从根结点DATAS开始查找关键字
    settings.setvalue("key", "value") ;	           					    // 给关键字key中写入数据,数据内容为value		
    settings.endGroup();
    // settings.setvalue("DATAS/key", "value") ;  					    //这样可以不用组直接写入,类似于上面分组

ini在使用中发现的一个问题,如果是在一个函数中,那么只有这个函数执行完,这个时候,才会往ini中写入内容,和TXT有一定的区别,TXT只要关闭你打开的文件,这个时候内容就已经保存到文件中了,或者直接通过flush强制写入也可以,所以在和其他程序通过ini文件配合时需要注意

QSettings获取数据,没有数据获取默认值

    QSettings settings(strFilePath, QSettings::IniFormat);				// strFilePath 文件所在路径,比如"../***/****/****.ini";
    settings.beginGroup("DATAS");										// 从根结点DATAS开始查找关键字
    QString strValue1 = settings.value("key", "").toString(); 	        // 从关键字key中取数据,第二个参数代表默认值
    settings.endGroup();
    // QString strValue1 = settings.value("DATAS/key", "").toString();  // 类似分组

QSettings 写入注册表

// strPath 写入位置
QSettings reg(strPath, QSettings::NativeFormat);

// strItemName 代表key值,strItemData代表 value值
reg.setValue(strItemName, strItemData);

// 示例
QSettings *reg = new QSettings("HKEY_CURRENT_USER//Software//yinhaifan", QSettings::NativeFormat);

reg->setValue("registered", true);

QSettings 读取注册表(和普通读取方法一样)

QSettings reg(strPath, QSettings::NativeFormat);
QString strValue = reg.value(strItemName).toString();

QSettings 删除注册表(和普通读取方法一样)

QSettings reg(strPath, QSettings::NativeFormat);
reg.remove(“Name”); // 删除key值为Name的介质对(也可以删除整个组)
QStringList keys = settings.allKeys(); // 查看剩余key值
// settings.clear(); 删除所有介质对

QSettings格式总结

Constant Value Description
QSettings::NativeFormat 0 Store the settings using the most appropriate storage format for the platform. On Windows, this means the system registry; on macOS and iOS, this means the CFPreferences API; on Unix, this means textual configuration files in INI format. 使用最适合平台的存储格式存储设置。在Windows上,这意味着系统注册表;在macOS和iOS上,这意味着CFPreferences API;在Unix上,这意味着INI格式的文本配置文件。
QSettings::Registry32Format 2 Windows only: Explicitly access the 32-bit system registry from a 64-bit application running on 64-bit Windows. On 32-bit Windows or from a 32-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7. 仅适用于Windows:从运行在64位Windows上的64位应用程序显式地访问32位系统注册表。在32位Windows或64位Windows上的32位应用程序中,这与指定NativeFormat的工作原理相同。enum值在Qt 5.7中添加。
QSettings::Registry64Format 3 Windows only: Explicitly access the 64-bit system registry from a 32-bit application running on 64-bit Windows. On 32-bit Windows or from a 64-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7. 仅适用于Windows:从运行在64位Windows上的32位应用程序显式地访问64位系统注册表。在32位Windows或64位Windows上的64位应用程序中,这与指定NativeFormat的工作原理相同。enum值在Qt 5.7中添加。
QSettings::IniFormat 1 Store the settings in INI files. 将设置存储在INI文件中。
QSettings::InvalidFormat 16 Special value returned by registerFormat(). registerFormat()返回的特殊值。

QSettings::InvalidFormat
注册自定义存储格式。如果成功,则返回一个特殊的格式值,然后可以将该值传递给QSettings构造函数。如果失败,则返回InvalidFormat。

你可能感兴趣的:(QT)