Qt使用QSettings保存和读取用户信息
Qt中保存和读取用户信息可以使用数据库,也可以使用QSettings。当需要保存的信息较少,那么使用QSettings写入配置文件就是一种比较简单的方式。
以用户注册与登录为例。
- 注册
首先绘制注册页,添加两个QLineEdit和一个QPushButton,如下。
然后开始编写配置文件。
首先你要include QSettings。
#include <QSettings>
然后,编写按钮的槽函数,将用户输入的内容保存到本地的配置文件中。
QString path = "./user.ini";
QSettings *config = new QSettings(path, QSettings::IniFormat);
//用户名base64加密
QString uidsec = userNameLEd -> text();
QByteArray uidb64 = uidsec.toLocal8Bit().toBase64();
QString uid = QString::fromLocal8Bit(uidb64);
//密码base64加密
QString pwdsec = pwdLEd -> text();
QByteArray pwdb64 = pwdsec.toLocal8Bit().toBase64();
QString pwd = QString::fromLocal8Bit(pwdb64);
//将信息写入配置文件
config -> beginGroup("config");
config -> setValue("uid", uid);
config -> setValue("pwd", pwd);
config -> endGroup();
按钮链接以上槽函数。
connect(loginBtn,&QPushButton::clicked,this,&Activation::activation);
之后执行程序,会在可执行程序同级目录下生成user.ini 配置文件,打开以后可以看到如下内容。
这里用户名和密码都是base64加密过的。
- 登录
绘制注册页。同样的两个QLineEdit和一个按钮。
然后,编写按钮的槽函数,读取本地的配置文件,并判断用户名和密码输入是否正确。
QString path = "./user.ini";
QSettings *config = new QSettings(path, QSettings::IniFormat);
//读取用户配置信息
QString uidsec = config -> value(QString("config/") + "uid").toString();
QByteArray uidb64 = QByteArray::fromBase64(uidsec.toLocal8Bit());
QString uid = QString::fromLocal8Bit(uidb64);
QString pwdsec = config -> value(QString("config/") + "pwd").toString();
QByteArray pwdb64 = QByteArray::fromBase64(pwdsec.toLocal8Bit());
QString pwd = QString::fromLocal8Bit(pwdb64);
if(uid == userNameLEd -> text() && pwd == pwdLEd -> text())
{
accept();
//验证成功,跳转到homepage页面
this -> close();
Homepage *home = new Homepage();
home -> show();
}
else
{
QMessageBox::warning(this,tr("警告!"),tr("用户名或密码错误!"),QMessageBox::Yes);
//清空输入框内容
userNameLEd -> clear();
pwdLEd -> clear();
//光标定位
userNameLEd -> setFocus();
}
按钮链接以上槽函数。
connect(loginBtn,&QPushButton::clicked,this,&Login::login);
这样,通过配置文件实现用户的注册和验证就实现了(๑ `▽´๑)
QSettings保存配置文件这一操作非常实用。除了登录外,还可以保存用户在页面中的设置,例如默认时间、按钮的默认开关等。