# 2023/4/6 QT练习QQ登录界面(完善)
2023/4/6 QT练习QQ登录界面(完善)
作业
完善登录界面
点击登录按钮后,判断账号和密码是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面
点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录
要求:对象版和静态成员函数版至少各实现一个
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//重新设置尺寸//this->resize(100,200);this->resize(QSize(430,330));//设置最小尺寸this->setMinimumSize(430,330);//设置最大尺寸this->setMaximumSize(430,330);//获取窗口标题qDebug()<<this->windowTitle();//设置窗口标题this->setWindowTitle("My_First-Window");//设置窗口图标this->setWindowIcon(QIcon(":/Images/QQ_T.png"));//设置窗口填充颜色//this->setStyleSheet("background-color:yellow");QLabel *backimage = new QLabel;backimage->setParent(this);backimage->resize(430,100);backimage->setPixmap(QPixmap(":/Images/background.jpg"));//设置填充内容为图片backimage->setScaledContents(true);//设置组件内容自适应QLabel *account = new QLabel(this);account->setPixmap(QPixmap(":/Images/QQ.png"));account->setScaledContents(true);//设置组件内容自适应account->move(100,150);account->resize(30,30);QLineEdit *acc = new QLineEdit(this);acc->move(140,150);acc->resize(150,30);acc->setPlaceholderText("用户名");QLabel *pswd = new QLabel(this);pswd->setPixmap(QPixmap(":/Images/locked.png"));pswd->setScaledContents(true);//设置组件内容自适应pswd->move(100,190);pswd->resize(30,30);QLineEdit *pwd = new QLineEdit(this);pwd->move(140,190);pwd->resize(150,30);pwd->setPlaceholderText("密码");pwd->setEchoMode(QLineEdit::Password);QPushButton *login = new QPushButton("登录",this);login->move(100,270);login->resize(60,30);QPushButton *cancel = new QPushButton("退出",this);cancel->move(230,270);cancel->resize(60,30);connect(login,&QPushButton::clicked,[=](){QString account = acc->text();QString passwd = pwd->text();if(account == "admin" && passwd == "123456"){this->close();//跳转到其他页面QMessageBox box(QMessageBox::Information,"提示","",QMessageBox::Ok);int ret = box.exec();if(ret == QMessageBox::Ok){qDebug() << "登陆成功";qDebug() << "进入下个页面";emit login_Signal(); //发射自定义信号}}else{int ret = QMessageBox::warning(this,"Warning","账号密码不匹配,是否重新登录",QMessageBox::Yes | QMessageBox::Cancel);if(ret == QMessageBox::Yes){pwd->clear();qDebug() << "重新登陆中";}else if(ret == QMessageBox::Cancel){this->close();qDebug() << "退出登录";}qDebug() << "账户密码不匹配";}});connect(cancel,&QPushButton::clicked,this,&Widget::on_clicked_cancel);// //将自定义函数与自定义槽函数连接
// connect(this,&Widget::mySignal,[](QString e)
// {
// qDebug() << e;
// });}void Widget::on_clicked_cancel()
{QMessageBox box(QMessageBox::Question,"Question","是否确定退出",QMessageBox::Yes | QMessageBox::No);int ret = box.exec();if(ret == QMessageBox::Yes){this->close();qDebug() << "退出登录";}else if(ret == QMessageBox::No){this->clearFocus();qDebug() << "重新登陆中";}
}Widget::~Widget()
{delete ui;
}