Qt使用QSettings读写ini文件

QSettings 简介

QSettings 类提供了ini文件读写,注册表读写的功能

QSettings::Format有两种:

QSettings::NativeFormat 在windows平台可以读写windows注册表

QSettings::IniFormat 可以读写ini格式的配置文件

示例

#include <QSettings>
#include <QDebug>

struct Student {
    Student() {}
    Student(QString name, int age) : name(name), age(age) {}
    
    QString name;
    int age;

    void print() {
        qDebug() << "name: " << name << ", age: " << age;
    }
};

int main(int argc, char *argv[])
{
    QSettings settings("config.ini", QSettings::IniFormat);
    QString name = QString("student") + "/" + "name";
    QString age = QString("student") + "/" + "age";
    
    settings.setValue(name, "billy");
    settings.setValue(age, "18");
    
    qDebug() << "name: " << settings.value(name, "").toString();
    qDebug() << "age: " << settings.value(age, "").toString();

    //-------------------------------------------------
    
    QList<Student> stu_list;
    stu_list.push_back(Student("Billy", 18));
    stu_list.push_back(Student("Kitty", 16));
    stu_list.push_back(Student("Alice", 17));
    stu_list.push_back(Student("Ben", 17));
    stu_list.push_back(Student("Miss", 18));
    
    settings.beginWriteArray("studentList");
    for ( int i = 0; i < stu_list.size(); ++i ) {
        settings.setArrayIndex(i);
        settings.setValue("name", stu_list.at(i).name);
        settings.setValue("age", stu_list.at(i).age);
    }
    settings.endArray();
    
    QList<Student> ret_list;
    int size = settings.beginReadArray("studentList");
    for (int i = 0; i < size; ++i) {
        settings.setArrayIndex(i);
        Student stu;
        stu.name = settings.value("name").toString();
        stu.age = settings.value("age").toInt();
        ret_list.append(stu);
    }
    settings.endArray();
    
    for ( auto &temp : ret_list )
    {
        temp.print();
    }
    
    return 0;
}

运行输出:
name:  "billy"
age:  "18"
name:  "Billy" , age:  18
name:  "Kitty" , age:  16
name:  "Alice" , age:  17
name:  "Ben" , age:  17
name:  "Miss" , age:  18

 

其他常用方法

QStringList QSettings::allKeys() const // 获取所有的key

bool QSettings::contains(const QString &key) const // 判断key是否存在

void QSettings::remove(const QString &key) // 移除key

void QSettings::setIniCodec(QTextCodec *codec) // 设置编码,处理中文乱码

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值