【Qt 读取、修改、存储.ini文件】及完整示例

在 Qt 中,QSettings 类被广泛用于读取、修改和存储 .ini 文件。这个类提供了一个简洁的 API 来处理配置数据,它使用 .ini 文件格式或系统特定的存储机制(例如 Windows 注册表)来存储应用程序的设置。

读取 .ini 文件

要读取 .ini 文件,您可以使用 QSettings 类,并指定文件路径和格式。以下是一个读取操作的示例:

cpp 复制代码
QSettings settings("config.ini", QSettings::IniFormat);
QString value = settings.value("section/key", "default_value").toString();

在这个例子中,settings 对象被初始化为使用 config.ini 文件,并且以 IniFormat 格式读取数据。value 函数用于获取特定节(section)和键(key)的值,如果该键不存在,则返回默认值 "default_value"

修改 .ini 文件

修改 .ini 文件同样使用 QSettings 类,您可以使用 setValue 方法来设置新的值:

cpp 复制代码
QSettings settings("config.ini", QSettings::IniFormat);
settings.setValue("section/key", "new_value");

这段代码将 config.ini 文件中 section 节下的 key 的值修改为 "new_value"

存储 .ini 文件

QSettings 类在修改设置时会自动存储更改。但是,如果您想确保所有更改立即写入磁盘,可以调用 sync 方法:

cpp 复制代码
settings.sync();

这将确保所有未写的更改被写入到 .ini 文件中。

-----

下面是一个使用 Qt 和 QSettings 类来读取、修改和存储 .ini 文件的完整示例。这个示例中,.ini 文件将包含两个模块(节),分别是 UserSettings

.ini 文件中的内容应该是这样的:

ini 复制代码
[User]
Name=New User
Age=30

[Settings]
StartMinimized=true

示例代码

cpp 复制代码
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 指定.ini文件名称和格式
    QSettings settings("config.ini", QSettings::IniFormat);

    // 读取操作
    QString userName = settings.value("User/Name", "Default User").toString();
    int userAge = settings.value("User/Age", 25).toInt();
    qDebug() << "User Name:" << userName;
    qDebug() << "User Age:" << userAge;

    bool startMinimized = settings.value("Settings/StartMinimized", false).toBool();
    qDebug() << "Start Minimized:" << startMinimized;

    // 修改操作
    userName = "New User";
    userAge = 30;
    startMinimized = true;

    settings.beginGroup("User");
    settings.setValue("Name", userName);
    settings.setValue("Age", userAge);
    settings.endGroup();

    settings.beginGroup("Settings");
    settings.setValue("StartMinimized", startMinimized);
    settings.endGroup();

    // 存储操作(通常不需要显式调用,因为QSettings会自动保存)
    settings.sync();

    // 再次读取以验证修改
    QString updatedUserName = settings.value("User/Name").toString();
    int updatedUserAge = settings.value("User/Age").toInt();
    qDebug() << "Updated User Name:" << updatedUserName;
    qDebug() << "Updated User Age:" << updatedUserAge;

    bool updatedStartMinimized = settings.value("Settings/StartMinimized", false).toBool();
    qDebug() << "Updated Start Minimized:" << updatedStartMinimized;

    return a.exec();
}

说明

  1. 初始化 QSettings

    • 创建一个 QSettings 对象,指定 .ini 文件的名称和路径(如果没有提供路径,文件将保存在当前工作目录)。
  2. 读取操作

    • 使用 value() 方法读取特定节下的键值。如果键不存在,返回提供的默认值。
  3. 修改操作

    • 使用 setValue() 方法修改或添加新的键值对。
    • 使用 beginGroup()endGroup() 来指定节(模块),这样可以组织相关的设置。
  4. 存储操作

    • 虽然 QSettings 会自动保存更改,但调用 sync() 方法可以确保所有更改立即写入文件。
  5. 验证修改

    • 重新读取修改后的值,以验证更改是否成功保存。
相关推荐
誰能久伴不乏2 小时前
深度解析 Qt 最顶层类 QObject:继承关系与内存生命周期管理
开发语言·qt
菜鸟看点3 小时前
QT中子线程触发主线程弹窗并阻塞等待用户响应-传统信号槽实现
qt
朱小勇本勇4 小时前
Qt自带示例及官方文档学习
开发语言·qt·学习
Wyn_6 小时前
【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)
开发语言·qt
@Turbo@6 小时前
【QT】在Qt6的`QTextEdit`中,同一行更新内容
开发语言·qt
showmeyourcode0.o7 小时前
QT常用控件(1)
开发语言·c++·qt
hvinsion9 小时前
【开源工具】Python+PyQt5打造智能桌面单词记忆工具:悬浮窗+热键切换+自定义词库
python·qt·考研·开源·英语·翻译·英语单词
hvinsion12 小时前
【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器
python·qt·开源·emoji·表情包
燃犀知不可乎骤得13 小时前
qt控制台程序与qt窗口程序在读取数据库中文字段的差异!!巨坑
开发语言·数据库·qt
chenzhanpeng_19 小时前
vscode 配置 QtCreat Cmake项目
ide·vscode·qt·编辑器·qt6.3