優化登錄框:
當用戶點擊取消按鈕,彈出問題對話框,詢問是否要確定退出登錄,并提供兩個按鈕,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()
{
}