当前位置: 首页 > news >正文

9.18号作业

完善登录框

点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:消息对话框,对象版和静态成员函数版至少各实现一个

second.h

#ifndef SECOND_H
#define SECOND_H#include <QWidget>
#include <QDebug>
namespace Ui {
class Second;
}class Second : public QWidget
{Q_OBJECT
public:void newslot();
public:explicit Second(QWidget *parent = nullptr);~Second();private:Ui::Second *ui;
};#endif // SECOND_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void mysignals();public slots:void userLogin();void userExit();private:
QPushButton *btn1;QPushButton *btn2;
QLabel *lab1;
QLabel *lab2;
QLabel *lab3;
QLineEdit *edit1;
QLineEdit *edit2;private:Ui::Widget *ui;
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
#include "second.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();Second s;QObject::connect(&w,&Widget::mysignals,&s,&Second::newslot);return a.exec();
}

second.cpp

#include "second.h"
#include "ui_second.h"Second::Second(QWidget *parent) :QWidget(parent),ui(new Ui::Second)
{ui->setupUi(this);
}
void Second::newslot()
{this->show();            //将自己界面进行展示
}Second::~Second()
{delete ui;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//构造一个登录按钮,并指定父组件,图标,和文本内容btn1=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\login.png"),"登录",this);//设置固定长度this->setFixedSize(400,300);//设置窗口标题this->setWindowTitle("Widget");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\wuhuiwu\\Desktop\\wodepeizhenshi.png"));//设置窗口尺寸btn1->setFixedSize(70,40);//移动按钮btn1->move(150,250);//再构造一个按钮,并给定父组件,图标,文本内容btn2=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\cancel.png"),"取消",this);//设置按钮尺寸btn2->setFixedSize(70,40);//移动按钮btn2->move(btn1->x()+70,btn1->y());//实例化一个标签并指定父组件lab1=new QLabel(this);//设置尺寸lab1->resize(400,150);//设置图片lab1->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\logo.png"));lab1->setScaledContents(true);//实例化一个标签并指定父组件lab2=new QLabel(this);//设置图片lab2->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\userName.jpg"));//设置尺寸lab2->resize(40,30);//引动图标lab2->move(120,160);lab2->setScaledContents(true);//实例化一个标签并指定父组件lab3=new QLabel(this);//设置图片lab3->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\passwd.jpg"));//设置尺寸lab3->resize(40,30);//移动图标lab3->move(lab2->x(),lab2->y()+50);lab3->setScaledContents(true);//构建一个文本编辑器edit1=new QLineEdit(this);//设置尺寸edit1->resize(100,30);edit1->move(lab2->x()+60,lab2->y());//设置占位文本edit1->setPlaceholderText("账号名");//构建一个文本编辑器edit2=new QLineEdit(this);//设置尺寸edit2->resize(100,30);edit2->move(edit1->x(),edit1->y()+50);//设置回显模式edit2->setEchoMode(QLineEdit::Password);edit1->setMaxLength(6);//登录connect(this->btn1,&QPushButton::clicked,this,&Widget::userLogin);//退出connect(this->btn2,&QPushButton::clicked,this,&Widget::userExit);}Widget::~Widget()
{delete ui;
}void Widget::userLogin()
{QString accout=this->edit1->text();QString password=this->edit2->text();if(accout=="admin"&&password=="123456"){qDebug()<<"匹配成功";QMessageBox box(QMessageBox::NoIcon,"success","登录成功",QMessageBox::Ok);int res=box.exec();if(res==QMessageBox::Ok){this->close();emit  mysignals();}}else{qDebug()<<"账户密码不匹配,是否重新登录";QMessageBox box1(QMessageBox::Critical,"error","账户密码错误",QMessageBox::Ok|QMessageBox::Cancel);int res=box1.exec();if(res==QMessageBox::Ok){this->edit2->clear();}else if(res==QMessageBox::Cancel){this->close();}}}
void Widget::userExit()
{QMessageBox box2(QMessageBox::Warning,"退出","要退出吗?",QMessageBox::Yes|QMessageBox::No);int res=box2.exec();if(res==QMessageBox::Yes){this->close();}else if(res==QMessageBox::No){this->edit1->clear();this->edit2->clear();}
}

思维导图

http://www.lryc.cn/news/170019.html

相关文章:

  • Spring源码阅读(spring-framework-5.2.24)
  • 【SpringMVC】文件上传与下载、JREBEL使用
  • 数据结构 第二章作业 线性表 西安石油大学
  • vue.mixin全局混合选项
  • VMware Fusion 13+Ubuntu ARM Server 22.04.3在M2芯片的Mac上共享文件夹
  • PostgreSQL serial类型
  • [创业之路-76] - 创业公司如何在长期坚持中顺势而为?诚迈科技参观交流有感
  • 人脸修复祛马赛克算法CodeFormer——C++与Python模型部署
  • linux入门到精通-第三章-vi(vim)编辑器
  • Mybatis面试题(三)
  • Qt扩展-KDDockWidgets 简介及配置
  • Vue3搭配Element Plus 实现候选搜索框效果
  • 进程间的通信方式
  • 分类预测 | Matlab实现基于MIC-BP-Adaboost最大互信息系数数据特征选择算法结合Adaboost-BP神经网络的数据分类预测
  • phpcms v9对联广告关闭左侧广告
  • 7.2.4 【MySQL】匹配范围值
  • 1400*C. No Prime Differences(找规律数学)
  • Python基础之装饰器
  • IDEA设置Maven 镜像
  • 项目评定等级L1、L2、L3、L4
  • 一个基于SpringBoot+Vue前后端分离学生宿舍管理系统详细设计实现
  • 工作相关----《配置bond》
  • Nacos、ZooKeeper和Dubbo的区别
  • 刷一下算法
  • three.js——GUI的使用
  • LeetCode 332. Reconstruct Itinerary【欧拉回路,通路,DFS】困难
  • 236. 二叉树的最近公共祖先 Python
  • WPF中DataGrid控件绑定数据源
  • Linux arm64 set_memory_ro/rw函数
  • 安达发|APS排单软件中甘特图的应用