QT开发中文网

详细一些

以下是对代码的详细注释:

#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();
}

这段代码实现了一个登录窗口,具体功能如下:

  1. 构造函数中,设置窗口属性为无边框,并根据主屏幕大小调整窗口尺寸。
  2. jsondata.json 是一个 JSON 文件,代码打开并读取该文件内容。
  3. 解析 JSON 数据,将其转换为 QJsonDocument 和 QJsonObject 对象。
  4. 在登录按钮点击事件中,检查用户是否输入了完整的用户名和密码。如果有任何一个字段为空,则弹出警告提示框。
  5. 获取用户输入的用户名和密码,并在 JSON 对象中查找对应的记录(通过管理员名称进行索引)。
  6. 验证用户输入的用户名和密码是否与存储在 JSON 对象中的记录匹配。
    • 如果匹配,则打开一个名为 AdministratorForm 的窗口,并将该用户的信息传递给新窗口,然后关闭当前登录窗口。
    • 如果不匹配,则弹出警告提示框显示用户名或密码错误。
  7. 忘记密码按钮点击事件中,关闭当前登录窗口。

这段代码实现了一个简单的登录功能,并使用 JSON 文件存储和验证用户信息。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=10584

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?