优化登录框:
当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,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_OBJECT
public 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()
{
}