QSettings配置ini文件,ReadArray、WriteArray读写一组系列数据

本文介绍了一个使用Qt进行登录信息管理的例子,通过QSettings实现登录信息的存储与读取,包括用户名、密码及位置坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <QSettings>
#include <QPointF>

typedef struct tag_Login{
    QString userName;
    QString password;
    QPointF pos;
}Login;

Login Create_mapping_func(const QString &userName,const QString &password,const QPointF &pos)
{
    Login temp;
    temp.userName = userName;
    temp.password = password;
    temp.pos 	  = pos;
    return temp;
}

int main(int argc, char *argv[])
{
    QList<Login> logins;

    logins.push_back(Create_mapping_func("test1","123456",QPointF(0.0,1.1)));
    logins.push_back(Create_mapping_func("test2","000000",QPointF(1.5,2.2)));
    logins.push_back(Create_mapping_func("test3","111111",QPointF(2.4,3.6)));
    logins.push_back(Create_mapping_func("test4","123123",QPointF(3.9,4.0)));

    QSettings settings("./myapp.ini",QSettings::IniFormat);
    settings.beginWriteArray("logins");
    for (int i = 0; i < logins.size(); ++i) {
        settings.setArrayIndex(i);
        settings.setValue("userName", logins.at(i).userName);
        settings.setValue("password", logins.at(i).password);
        settings.setValue("pos",logins.at(i).pos);
    }
    settings.endArray();

    int size = settings.beginReadArray("logins");
    for (int i = 0; i < size; ++i) {
        settings.setArrayIndex(i);
        Login login;
        login.userName 	=	settings.value("userName").toString();
        login.password 	=	settings.value("password").toString();
        login.pos 		=	settings.value("pos").toPointF();
        logins.append(login);
    }
    settings.endArray();

    foreach(Login s,logins){
        qDebug()<<"userName:"<<s.userName<<" password:"<<s.password<<" pos:("<<s.pos.x()<<","<<s.pos.y()<<")";
    }
}

运行结果:

userName: "test1"  password: "123456"  pos:( 0 , 1.1 )
userName: "test2"  password: "000000"  pos:( 1.5 , 2.2 )
userName: "test3"  password: "111111"  pos:( 2.4 , 3.6 )
userName: "test4"  password: "123123"  pos:( 3.9 , 4 )
userName: "test1"  password: "123456"  pos:( 0 , 1.1 )
userName: "test2"  password: "000000"  pos:( 1.5 , 2.2 )
userName: "test3"  password: "111111"  pos:( 2.4 , 3.6 )
userName: "test4"  password: "123123"  pos:( 3.9 , 4 )

myapp.ini

[logins]
1\userName=test1
1\password=123456
2\userName=test2
2\password=000000
3\userName=test3
3\password=111111
4\userName=test4
4\password=123123
size=4
1\pos=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0?\xf1\x99\x99\x99\x99\x99\x9a)
2\pos=@Variant(\0\0\0\x1a?\xf8\0\0\0\0\0\0@\x1\x99\x99\x99\x99\x99\x9a)
3\pos=@Variant(\0\0\0\x1a@\x3\x33\x33\x33\x33\x33\x33@\f\xcc\xcc\xcc\xcc\xcc\xcd)
4\pos=@Variant(\0\0\0\x1a@\xf\x33\x33\x33\x33\x33\x33@\x10\0\0\0\0\0\0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值