以下是对代码的详细注释:
#include "login.h"
#include "ui_login.h"
#include <QFile>
#include <QTextStream>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonValue>
#include <QJsonObject>
#include "administratorform.h"
#include <QGuiApplication>
#include <QScreen>
#include <QMessageBox>
Login::Login(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
// 获取主屏幕信息
QScreen *primaryScreen = QGuiApplication::primaryScreen();
QRect screenGeometry = primaryScreen->geometry();
int screenWidth = screenGeometry.width();
int screenHeight = screenGeometry.height();
this->setFixedSize(screenWidth, screenHeight);
ui->label_user_name->setScaledContents(true); // 图片自适应label大小
ui->label_pwd->setScaledContents(true); // 图片自适应label大小
ui->lineE_pwd->setEchoMode(QLineEdit::Password);// 设置为小黑点
// 1. 读取该文件内容
QString filePath = "jsondata.json";
// 打开JSON文件
QFile file(filePath);
file.open(QIODevice::ReadOnly);
// 读取JSON数据
jsonData = file.readAll();
file.close();
// 解析JSON数据
jsonDoc = QJsonDocument::fromJson(jsonData);
jsonObj = jsonDoc.object();
}
Login::~Login()
{
delete ui;
}
void Login::on_btn_login_clicked()
{
if(ui->lineE_user_name->text().isEmpty() || ui->lineE_pwd->text().isEmpty())
{
QMessageBox::warning(this, "", "请输入完整信息", QMessageBox::Yes, QMessageBox::NoButton);
return;
}
// 获取用户输入的用户名和密码
QString adminName = ui->lineE_user_name->text();
QString password = ui->lineE_pwd->text();
// 在 JSON 对象中查找对应的记录
QJsonObject name = jsonObj[adminName].toObject();
// 验证用户名和密码是否匹配
if(name[adminName].toString() == password)
{
AdministratorForm *ad = new AdministratorForm(name);
ad->setAttribute(Qt::WA_DeleteOnClose);
ad->show();
this->close();
}
else
{
QMessageBox::warning(this, "", "用户名或密码错误", QMessageBox::Yes, QMessageBox::NoButton);
}
}
void Login::on_btn_forget_clicked()
{
this->close();
}
这段代码实现了一个登录窗口,具体功能如下:
- 构造函数中,设置窗口属性为无边框,并根据主屏幕大小调整窗口尺寸。
jsondata.json
是一个 JSON 文件,代码打开并读取该文件内容。- 解析 JSON 数据,将其转换为 QJsonDocument 和 QJsonObject 对象。
- 在登录按钮点击事件中,检查用户是否输入了完整的用户名和密码。如果有任何一个字段为空,则弹出警告提示框。
- 获取用户输入的用户名和密码,并在 JSON 对象中查找对应的记录(通过管理员名称进行索引)。
- 验证用户输入的用户名和密码是否与存储在 JSON 对象中的记录匹配。
- 如果匹配,则打开一个名为
AdministratorForm
的窗口,并将该用户的信息传递给新窗口,然后关闭当前登录窗口。 - 如果不匹配,则弹出警告提示框显示用户名或密码错误。
- 如果匹配,则打开一个名为
- 忘记密码按钮点击事件中,关闭当前登录窗口。
这段代码实现了一个简单的登录功能,并使用 JSON 文件存储和验证用户信息。
内容由零声教学AI助手提供,问题来源于学员提问