網(wǎng)站建設(shè)改版農(nóng)大南路網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣優(yōu)化
目錄
完善登錄框
點(diǎn)擊登錄按鈕后,判斷賬號(hào)(admin)和密碼(123456)是否一致,如果匹配失敗,則彈出錯(cuò)誤對(duì)話框,文本內(nèi)容“賬號(hào)密碼不匹配,是否重新登錄”,給定兩個(gè)按鈕ok和cancel,點(diǎn)擊ok后,會(huì)清除密碼框中的內(nèi)容,繼續(xù)進(jìn)行登錄;如果點(diǎn)擊cancel按鈕,則關(guān)閉界面。
如果賬號(hào)和密碼匹配,則彈出信息對(duì)話框,給出提示信息為“登錄成功”,給出一個(gè)按鈕ok,點(diǎn)擊ok后,關(guān)閉整個(gè)登錄界面,跳轉(zhuǎn)到其他界面
點(diǎn)擊取消按鈕后,彈出問(wèn)題對(duì)話框,詢(xún)問(wèn)是否確定要退出登錄,給出兩個(gè)按鈕,yes|no,點(diǎn)擊yes,則直接關(guān)閉整個(gè)登錄界面,如果點(diǎn)擊no則進(jìn)行進(jìn)行登錄
要求:消息對(duì)話框,對(duì)象版和靜態(tài)成員函數(shù)版至少各實(shí)現(xiàn)一個(gè)
頭文件:
widget.h:
login.h:
源文件:
widget.cpp:
login.cpp:
main.cpp:
效果圖:
思維導(dǎo)圖
完善登錄框
點(diǎn)擊登錄按鈕后,判斷賬號(hào)(admin)和密碼(123456)是否一致,如果匹配失敗,則彈出錯(cuò)誤對(duì)話框,文本內(nèi)容“賬號(hào)密碼不匹配,是否重新登錄”,給定兩個(gè)按鈕ok和cancel,點(diǎn)擊ok后,會(huì)清除密碼框中的內(nèi)容,繼續(xù)進(jìn)行登錄;如果點(diǎn)擊cancel按鈕,則關(guān)閉界面。
如果賬號(hào)和密碼匹配,則彈出信息對(duì)話框,給出提示信息為“登錄成功”,給出一個(gè)按鈕ok,點(diǎn)擊ok后,關(guān)閉整個(gè)登錄界面,跳轉(zhuǎn)到其他界面
點(diǎn)擊取消按鈕后,彈出問(wèn)題對(duì)話框,詢(xún)問(wèn)是否確定要退出登錄,給出兩個(gè)按鈕,yes|no,點(diǎn)擊yes,則直接關(guān)閉整個(gè)登錄界面,如果點(diǎn)擊no則進(jìn)行進(jìn)行登錄
要求:消息對(duì)話框,對(duì)象版和靜態(tài)成員函數(shù)版至少各實(shí)現(xiàn)一個(gè)
頭文件:
widget.h:
#ifndef WIDGET_H
#define WIDGET_H#include "login.h"
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QObject>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jumpToLogin();public slots:void loginBtn_slot();void cancelBtn_slot();private:Ui::Widget *ui;QLabel *lab1;QLineEdit *edit1;QLineEdit *edit2;QLabel *lab2;QLabel *lab3;QPushButton *btn1;QPushButton *btn2;login *l1;
};
#endif // WIDGET_H
login.h:
#ifndef LOGIN_H
#define LOGIN_H#include <QWidget>namespace Ui {
class login;
}class login : public QWidget
{Q_OBJECT
public slots:void jumpToLogin_slot();public:explicit login(QWidget *parent = nullptr);~login();private:Ui::login *ui;
};#endif // LOGIN_H
源文件:
widget.cpp:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);l1 = new login;//將圖形化界面的名字改成Login screen(登錄界面)this->setWindowTitle("Login screen");//將ui的圖標(biāo)改成想要的this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));//設(shè)置ui界面的大小為合適的大小this->setFixedSize(QSize(400,300));//插入一個(gè)label,它的寬度與ui等寬,高度大約為整個(gè)ui界面高度的4/9lab1 = new QLabel(this);lab1->resize(QSize(400,133));lab1->move(0,0);//label的內(nèi)容要是一張圖片lab1->setPixmap(QPixmap(":/icon/logo.png"));//設(shè)置圖片填充lab1->setScaledContents(true);//插入兩個(gè)行編輯器,第一個(gè)用于輸入賬號(hào)edit1 = new QLineEdit(this);edit1->resize(QSize(240,40));edit1->move(110,150);edit1->setPlaceholderText("賬號(hào)");//第二個(gè)用于輸入密碼edit2 = new QLineEdit(this);edit2->resize(QSize(240,40));edit2->move(edit1->x(),edit1->y()+55);edit2->setPlaceholderText("密碼");//第二個(gè)回顯模式是密碼模式edit2->setEchoMode(QLineEdit::Password);//每個(gè)行編輯器前都要有一個(gè)label,內(nèi)容為圖片lab2 = new QLabel(this);lab2->resize(50,40);lab2->setPixmap(QPixmap(":/icon/userName.jpg"));lab2->setScaledContents(true);lab2->move(edit1->x()-60,edit1->y());lab3 = new QLabel(this);lab3->resize(50,40);lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));lab3->setScaledContents(true);lab3->move(edit2->x()-60,edit2->y());//要有兩個(gè)pushbutton,一個(gè)是登錄另一個(gè)是取消btn1 = new QPushButton("登錄",this);btn2 = new QPushButton("取消",this);//重設(shè)他們的尺寸btn1->resize(QSize(60,30));btn2->resize(btn1->size());//移動(dòng)他們的位置到合適btn1->move(120,edit2->y()+55);btn2->move(btn1->x()+120,edit2->y()+55);//內(nèi)容都會(huì)有一個(gè)圖片btn1->setIcon(QIcon(":/icon/login.png"));btn2->setIcon(QIcon(":/icon/cancel.png"));//將登錄按鈕點(diǎn)擊發(fā)信號(hào)與處理函數(shù)連接connect(btn1, &QPushButton::clicked, this, &Widget::loginBtn_slot);//將取消按鈕點(diǎn)擊發(fā)信號(hào)與處理函數(shù)連接connect(btn2, &QPushButton::clicked, this, &Widget::cancelBtn_slot);//將跳轉(zhuǎn)信號(hào)與login界面的處理函數(shù)連接connect(this, &Widget::jumpToLogin, l1, &login::jumpToLogin_slot);
}Widget::~Widget()
{delete ui;
}void Widget::loginBtn_slot()
{if(edit1->text()==QString("damin")&&edit2->text()==QString("123456")){
// //使用靜態(tài)成員函數(shù)的方式打開(kāi)一個(gè)信息對(duì)話框
// QMessageBox::Information(this,
// "登錄成功",
// "登錄成功",
// QMessageBox::Ok,
// QMessageBox::Ok);//對(duì)象版實(shí)現(xiàn)打開(kāi)一個(gè)信息對(duì)話框QMessageBox box(QMessageBox::Information,"登錄成功","登錄成功",QMessageBox::Ok,this);//登錄成功發(fā)送跳轉(zhuǎn)信號(hào)box.exec();//信息對(duì)話框只提示登錄成功,只有一個(gè)按鈕,所以不需要判斷emit this->jumpToLogin();this->close();}else{//對(duì)象版實(shí)現(xiàn)打開(kāi)一個(gè)錯(cuò)誤對(duì)話框QMessageBox box(QMessageBox::Critical,"錯(cuò)誤","賬號(hào)密碼不匹配,是否重新登錄",QMessageBox::Ok|QMessageBox::Cancel,this);//設(shè)置默認(rèn)選擇的按鈕box.setDefaultButton(QMessageBox::Ok);int ret = box.exec();//有兩個(gè)按鈕,需要判斷if(QMessageBox::Ok==ret){edit2->clear();}else{this->close();}}
}void Widget::cancelBtn_slot()
{//使用靜態(tài)成員函數(shù)的方式打開(kāi)一個(gè)對(duì)話框int ret = QMessageBox::question(this,"請(qǐng)問(wèn)","是否確認(rèn)要退出",QMessageBox::Yes|QMessageBox::No,QMessageBox::No);switch (ret) {case QMessageBox::Yes://確認(rèn)就退出this->close();break;case QMessageBox::No://否就不進(jìn)行任何操作break;default://應(yīng)該不會(huì)有這種可能性break;}
}
login.cpp:
#include "login.h"
#include "ui_login.h"login::login(QWidget *parent) :QWidget(parent),ui(new Ui::login)
{ui->setupUi(this);
}login::~login()
{delete ui;
}void login::jumpToLogin_slot()
{this->show(); //展示自己的界面
}
main.cpp:
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}