完善登录框
点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面
点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录
要求:消息对话框,对象版和静态成员函数版至少各实现一个
登录失败功能、取消键功能
登录成功弹窗、登录后界面跳转
second.h
#ifndef SECOND_H
#define SECOND_H
#include <QWidget>
namespace Ui {
class Second;
}
class Second : public QWidget
{
Q_OBJECT
public:
explicit Second(QWidget *parent = nullptr);
~Second();
private:
Ui::Second *ui;
public slots:
void jump_slot();
};
#endif // SECOND_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMessageBox>
#include<QPushButton>
#include<QLabel>
#include<QLineEdit>
#include "second.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void fun();
QLabel *lab1;
QLabel *lab2;
QLabel *lab3;
QLineEdit *edit1;
QLineEdit *edit2;
QPushButton *btn1;
QPushButton *btn2;
private slots:
void login_clicked();
void cancel_clicked();
private:
Ui::Widget *ui;
Second *s1;
signals:
void jump(); //自定义跳转函数
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
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);
}
Second::~Second()
{
delete ui;
}
void Second::jump_slot()
{
this->show();//展示
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
s1=new Second;
connect(this,&Widget::jump,s1,&Second::jump_slot);
resize(QSize(960,1200)); //使用匿名对象作为函数参数设置当前组件的尺寸
setFixedSize(960,1200); //设置固定尺寸
setWindowTitle("miHoYo"); //设置窗口标题
setWindowIcon(QIcon(":/icon/qq.png")); //设置窗口图标
setStyleSheet("background-color:white;"); //设置样式表
setWindowOpacity(2); //设置窗口透明度
lab1 = new QLabel(this);
lab1->resize(960,532); //重新设置尺寸
lab1->setAlignment(Qt::AlignCenter);
// lab1->setStyleSheet("background-color:yellow;");
lab1->setPixmap(QPixmap(":/icon/logo.png")); //设置图片
lab1->setScaledContents(true);
lab2 = new QLabel(this);
lab2->resize(65,71); //重新设置尺寸
lab2->move(lab1->x()+200,lab1->y()+700);
//lab2->setStyleSheet("background-color:yellow;");
lab2->setPixmap(QPixmap(":/icon/user.jpg")); //设置图片
lab2->setScaledContents(true);
lab3 = new QLabel(this);
lab3->resize(65,71); //重新设置尺寸
lab3->move(lab2->x(),lab2->y()+150);
lab3->setAlignment(Qt::AlignCenter);
//lab3->setStyleSheet("background-color:yellow;");
lab3->setPixmap(QPixmap(":/icon/passwd.jpg")); //设置图片
lab3->setScaledContents(true);
edit1 = new QLineEdit(this);
edit1->resize(350,50);
edit1->move(lab2->x()+120, lab2->y());
edit1->setEchoMode(QLineEdit::Normal); //设置回显模式
edit1->setMaxLength(11);
edit1->setPlaceholderText("账号/手机/邮箱"); //设置占位文本
edit2 = new QLineEdit(this);
edit2->resize(350,50);
edit2->move(lab3->x()+120, lab3->y());
edit2->setEchoMode(QLineEdit::Password); //设置回显模式
edit2->setMaxLength(10);
edit2->setPlaceholderText("密码"); //设置占位文本
btn1 = new QPushButton;//无参构造
connect(btn1,&QPushButton::clicked,this,&Widget::login_clicked);
btn1->setParent(this); //将当前界面作为父组件
btn1->setText("登录"); //设置按钮上的文本内容
btn1->resize(100,30); //重新设置组件尺寸
btn1->setIcon(QIcon(":/icon/login.png")); //设置图标
btn1->move(edit2->x()-20,edit2->y()+150); //移动组件位置
btn2 = new QPushButton; //无参构造
connect(btn2,&QPushButton::clicked,this,&Widget::cancel_clicked);
btn2->setParent(this); //将当前界面作为父组件
btn2->setText("取消"); //设置按钮上的文本内容
btn2->resize(100,30); //重新设置组件尺寸
btn2->setIcon(QIcon(":/icon/cancel.png")); //设置图标
btn2->move(btn1->x()+250,btn1->y());
}
Widget::~Widget()
{
delete ui;
}
//登录按钮对应的槽函数
void Widget::login_clicked()
{
//登录失败
if(edit1->text()!="admin"&&edit2->text()!="123456")
{
//调用构造函数实例化对象
QMessageBox box(QMessageBox::Critical,//图标
"错误",//对话框标题
"账号密码不匹配,是否重新登录",//对话框文本
QMessageBox::Yes|QMessageBox::No,//提供的按钮
this);//父组件
box.setDefaultButton(QMessageBox::Yes);
box.setButtonText(QMessageBox::Yes,"OK");
box.setButtonText(QMessageBox::No,"cancel");
//调用exec函数运行对话框
int ret = box.exec();
//对结果进行判断
if(ret==QMessageBox::Yes)
{
//清空内容
edit1->clear();
}
else
{
//关闭界面
this->close();
}
}
//登录成功
else
{
//调用构造函数实例化对象
QMessageBox box(QMessageBox::NoIcon,//图标
" ",//对话框标题
"登录成功",//对话框文本
QMessageBox::Ok,//提供的按钮
this);//父组件
box.exec();//运行对话框
emit jump();//跳转界面
this->close();//关闭当前界面
}
}
//退出按钮
void Widget::cancel_clicked()
{
int ret=QMessageBox::warning(this,
"警告",
"是否确定要退出登录",
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No);
//对结果进行判断如果点yes则关闭
if(ret==QMessageBox::Yes)
{
this->close();//关闭界面
}
}