龙空技术网

Qt之如何读写INI文件

C加加Qt技术开发老杰 291

前言:

眼前小伙伴们对“jsforinie8”都比较关怀,同学们都想要分析一些“jsforinie8”的相关知识。那么小编同时在网上收集了一些对于“jsforinie8””的相关知识,希望大家能喜欢,同学们一起来学习一下吧!

一、简介

在日常的工作中,有时候需要将部分信息保存到本地,也就是写入到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开发必备技术栈学习路线和资料

三、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开发必备技术栈学习路线和资料

标签: #jsforinie8