#include "login.h" // 包含登录窗口的头文件
#include "ui_login.h" // 登录窗口的UI定义
#include <QFile> // 文件读写类
#include <QTextStream> // 文本流类,用于读写文本数据
#include <QJsonArray> // JSON数组类,用于操作JSON数组数据
#include <QJsonDocument> // JSON文档类,用于解析和创建JSON文档
#include <QJsonValue> // JSON值类,用于表示JSON中的值
#include <QJsonObject> // JSON对象类,用于操作JSON对象数据
#include "administratorform.h" // 管理员表单界面的头文件
#include <QGuiApplication> // GUI应用程序类,提供与GUI相关的功能和属性访问方法
#include <QScreen> // 屏幕信息类,用于获取屏幕尺寸等信息
#include <QMessageBox> // 消息框类,显示消息提示框
Login::Login(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); // 设置UI界面
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); // 设置密码输入框为小黑点模式
QString filePath = "jsondata.json"; // JSON数据文件路径
QFile file(filePath); // 打开JSON文件
file.open(QIODevice::ReadOnly);
jsonData = file.readAll(); // 读取JSON数据
file.close();
jsonDoc = QJsonDocument::fromJson(jsonData); // 解析JSON数据
jsonObj = jsonDoc.object(); // 获取JSON对象
}
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(); // 获取用户输入的密码
QJsonObject name = jsonObj[adminName].toObject(); // 在JSON对象中查找对应的记录
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(); // 关闭当前登录窗口
}
以上是详细注释的代码示例,实现了一个登录窗口,使用了Qt框架进行开发。
内容由零声教学AI助手提供,问题来源于学员提问