1 Star 1 Fork 0

一只路过的小码农/QT工控

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
registration.cpp 3.46 KB
一键复制 编辑 原始数据 按行查看 历史
一只路过的小码农 提交于 2024-04-15 13:51 . 优化
#include "registration.h"
#include "ui_registration.h"
#include <QMessageBox>
#include<QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
Registration::Registration(QWidget *parent) :
QWidget(parent),
ui(new Ui::Registration)
{
ui->setupUi(this);
setWindowTitle("注册"); // 设置窗口名称
// 设置左上角图标
this->setWindowIcon(QIcon(":/images/res/BitMap/key1.bmp"));
// 加载json文件中的数据
QFile file(dataFileName);
if(file.exists()) // 文件存在才操作
{
// 读取文件中的数据 [{"name": "bob", "pwd": "123"}, {"name": "lucy", "pwd": "456"}]
file.open(QIODevice::ReadOnly);
QByteArray userData = file.readAll(); // 读取所有数据
QJsonDocument userFromJson = QJsonDocument::fromJson(userData); // 将数据转换成json对象
if(!userFromJson.isNull() && userFromJson.isArray())
{
QJsonArray userArray = userFromJson.array();
for (const QJsonValue &qJsonValue : userArray) { // 遍历数据
if(qJsonValue.isObject())
{
QJsonObject object = qJsonValue.toObject();
QMap<QString,QString> map;
// 遍历所有键值对
for (auto it = object.constBegin(); it != object.constEnd(); ++it) {
map.insert(it.key(), it.value().toString());
}
users.push_back(map);
}
}
}
file.close(); // 关闭文件
}
}
Registration::~Registration()
{
// 析构时将用户数据写入文件
writeUsers();
delete ui;
}
bool Registration::isUserPwd(QString name, QString pwd)
{
if(users.size() < 1)
{
return false;
}
// 遍历用户数据
for (const QMap<QString, QString> &map : users) {
if(map["name"] == name) // 找到用户
{
// 判断密码是否相等
if(map["pwd"] == pwd)
return true;
}
}
return false;
}
void Registration::on_surePushButton_clicked()
{
// 校验密码是否一致
QString pwd = ui->pwdLineEdit->text();
QString password = ui->passwordLineEdit->text();
if(pwd != password)
{
QMessageBox::warning(this,"警告", "两次输入的密码不一致,请检查!");
return;
}
userName = ui->nameLineEdit->text();
this->password = pwd;
QMap<QString, QString> map;
map.insert("name", userName);
map.insert("pwd", pwd);
users.push_back(map); // 将用户信息加入到数据中
writeUsers();
// 跳转会登录页
emit registToLogin();
}
void Registration::on_cancelPushButton_clicked()
{
// 用户点击取消清空数据并返回
ui->pwdLineEdit->setText("");
ui->passwordLineEdit->setText("");
ui->nameLineEdit->setText("");
// 跳转会登录页
emit registToLogin();
}
void Registration::writeUsers()
{
QJsonArray jsonArray;
// 遍历用户数据
for (const QMap<QString, QString> &map : users) {
QJsonObject jsonObj;
for (auto it = map.constBegin(); it != map.constEnd(); ++it) {
jsonObj.insert(it.key(), QJsonValue::fromVariant(it.value()));
}
jsonArray.append(jsonObj);
}
QJsonDocument jsonDoc(jsonArray);
QByteArray jsonData = jsonDoc.toJson();
// 写入文件
QFile file(dataFileName);
file.open(QIODevice::WriteOnly);
file.write(jsonData);
file.close();
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/YiZhiLuGuoDeXiaoMaNong/qt-industrial-control.git
git@gitee.com:YiZhiLuGuoDeXiaoMaNong/qt-industrial-control.git
YiZhiLuGuoDeXiaoMaNong
qt-industrial-control
QT工控
master

搜索帮助