优化登录框:
当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录
当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为,登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面
当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面
要求:静态成员函数版本和对象版本各至少实现一个
头文件:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QPushButton> //按键类头文件
#include<QLabel> //标题类头文件
#include<QLineEdit> //行编辑器头文件
#include<QDebug> //输出类头文件
#include<QMessageBox> //对话框类头文件
class Widget : public QWidget
{Q_OBJECTpublic slots:void clicked_slot();signals:void jump();public:Widget(QWidget *parent = nullptr);~Widget();private:QLabel *lab1;QLabel *lab2;QLabel *lab3;QLineEdit *edit1;QLineEdit *edit2;QPushButton *btn1;QPushButton *btn2;
};
#endif // WIDGET_H
源文件:
#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{//设置整个界面resize(400,500);setWindowIcon(QIcon(":/pictrue/qq2.gif"));setWindowTitle("KK快聊");//给lable1实例化空间并设置(logo)lab1= new QLabel("logo",this);lab1->resize(400,160);lab1->setPixmap(QPixmap(":/pictrue/zz.gif"));lab1->setScaledContents(true);//给lable2实例化空间并设置(账号)lab2= new QLabel("账号",this);lab2->resize(50,40);lab2->move(40,200);//给lable3实例化空间并设置(密码)lab3= new QLabel("密码",this);lab3->resize(lab2->size());lab3->move(lab2->x(), lab2->y()+lab2->height()+10);//给edit1实例化空间并设置(输入账号)edit1=new QLineEdit(this);edit1->resize(200, 40);edit1->move(100,200);edit1->setAlignment(Qt::AlignCenter); //设置对齐方式edit1->setPlaceholderText("请输入账号"); //设置占位文本//给edit2实例化空间并设置(输入密码)edit2=new QLineEdit(this);edit2->resize(edit1->size());edit2->move(edit1->x(), edit1->y()+edit1->height()+10);edit2->setAlignment(Qt::AlignCenter); //设置对齐方式edit2->setPlaceholderText("请输入密码"); //设置占位文本edit2->setEchoMode(QLineEdit::Password); //设置回显模式//给btn1实例化空间并设置(登录)btn1 = new QPushButton("登录", this);btn1->resize(50,30);btn1->move(140,400);//给btn2实例化空间并设置(取消)btn2 = new QPushButton("取消", this);btn2->resize(btn1->size());btn2->move(btn1->x()+btn1->width()+10, btn1->y());//将登陆按钮的clicked信号连接到自定义的槽函数QObject::connect(btn1,&QPushButton::clicked,this,&Widget::clicked_slot);//设置取消按键的clicked信号QObject::connect(btn2, &QPushButton::clicked, [this](){//实例化一个问题对话框的对象QMessageBox box(QMessageBox::Question,"问题对话框","是否确定退出登录",QMessageBox::Yes|QMessageBox::No,this);//调用exec函数,将对话框显示出来int res=box.exec();if(res==QMessageBox::Yes){close();}});}//登陆按钮点击信号的槽函数
void Widget::clicked_slot()
{//获取账号密码QString usrname =edit1->text();QString pwd =edit2->text();//判断账号和密码是否一致if(usrname==pwd){//调用静态成员函数,创建一个信息对话框QMessageBox::information(this,"信息对话框","登录成功",QMessageBox::Ok);close();emit jump();}else{//实例化一个问题对话框的对象QMessageBox box(QMessageBox::Question,"问题对话框","账号与密码不匹配,是否重新登录",QMessageBox::Yes|QMessageBox::No,this);//调用exec函数,将对话框显示出来int res=box.exec();if(res==QMessageBox::Yes){edit2->clear();}else if(res==QMessageBox::No){close();}}
}Widget::~Widget()
{
}