Qt之如何读写INI文件

一、简介

在日常的工作中,有时候需要将部分信息保存到本地,也就是写入到INI文件中,便于下次使用;在Qt中可以使用QSetting来进行INI文件的读写。

二、常用函数介绍

(1).void QSettings::beginGroup(const QString & prefix)

相当于在INI文件中添加了一个索引,根据索引的不同,可以读取相对应的值

(2).void QSettings::endGroup()

将组重置为相应的eginGroup()调用之前的状态。

(3).void QSettings::setValue(const QString & key, const QVariant & value)

向INI文件中写入信息,信息以键值对的方式写入到INI文件中,如果key值已经存在了,那么key对应的value值便会被新值覆盖掉。

(4).QVariant QSettings::value(const QString & key, const QVariant & defaultValue = QVariant()) const

从INI文件中读取信息,返回设置键的值,如果设置的键不存在,则返回defaultValue,如果未指定默认的值,则返回默认QVariant()。

(5).QString QSettings::group() const

返回当前的组名

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓

三、INI文件的读写

//从INI文件中读取信息
void MainWindow::read_ini_file()
{
    QSettings ini_config("setting.ini", QSettings::IniFormat);
    ini_config.beginGroup("main_window");
    QString group_name = ini_config.group();
    QSize size = ini_config.value("size").toSize();
    bool full_screen = ini_config.value("full_screen").toBool();
    ini_config.endGroup();

    qDebug() << "group_name:" << group_name <<  "size:" << size << "full_screen:" << full_screen;
}
//向INI文件中写入信息
void MainWindow::write_ini_file()
{
    QSettings ini_config("setting.ini", QSettings::IniFormat);
    ini_config.beginGroup("main_window");
    ini_config.setValue("size", this->size());
    ini_config.setValue("full_screen", this->isFullScreen());
    ini_config.endGroup();
}

写入结果:

读取结果:

四、数组信息写入到INI文件中

如果某组键多次出现,而且想要都保留下来的话,可以使用下列函数进行读写

(1).void QSettings::beginWriteArray(const QString & prefix, int size = -1)

将前缀添加到当前组并开始写入大小为大小的数组。如果 size 为 -1(默认),则根据写入的条目的索引自动确定。

(2).int QSettings::beginReadArray(const QString & prefix)

将前缀添加到当前组并开始从数组中读取。返回数组的大小。

(3).void QSettings::endArray()

关闭使用 beginReadArray() 或 beginWriteArray() 启动的数组。

//向INI文件中写入信息
void MainWindow::write_ini_file()
{
    Login login_infos[2];
    login_infos[0].user_name = "test_one";
    login_infos[0].password = "Password";

    login_infos[1].user_name = "test_two";
    login_infos[1].password = "Password123";

    QSettings settings("setting.ini", QSettings::IniFormat);
    settings.beginWriteArray("logins");
    for (int i = 0; i < 2; ++i) {
        settings.setArrayIndex(i);
        settings.setValue("user_name", login_infos[i].user_name);
        settings.setValue("password", login_infos[i].password);
    }
    settings.endArray();
}
//从INI文件中读取信息
void MainWindow::read_ini_file()
{
    QList<Login> logins;

    QSettings settings("setting.ini", QSettings::IniFormat);
    int size = settings.beginReadArray("logins");
    for (int i = 0; i < size; ++i) {
        settings.setArrayIndex(i);
        Login login;
        login.user_name = settings.value("user_name").toString();
        login.password = settings.value("password").toString();
        logins.append(login);
    }
    settings.endArray();

    foreach (Login info, logins) {
        qDebug() << "user_name:" << info.user_name << "password:" << info.password;
    }
}

文章转自博客园(TechNomad):Qt之如何读写INI文件 - TechNomad - 博客园

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓ 

猜你喜欢

转载自blog.csdn.net/QtCompany/article/details/132111501
今日推荐