思維導圖
使用手動連接,將登錄框中的取消按鈕使用qt4版本的連接到自定義的槽函數中,在自定義的槽函數中調用關閉函數
將登錄按鈕使用qt5版本的連接到自定義的槽函數中,在槽函數中判斷ui界面上輸入的賬號是否為"admin",密碼是否為"123456",如果賬號密碼匹配成功,則輸出“登錄成功”,并關閉該界面,如果匹配失敗,則輸出登錄失敗,并將密碼框中的內容清空
widget.h:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QDebug>
#include<QPushButton>//按鈕類
#include<QLabel>//標簽類
#include<QLineEdit>//行編輯器類
#include<QMovie>//動圖類
#include <QPainter>
#include <QPixmap>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void my_slot1();void my_slot2();private:Ui::Widget *ui;QMovie *mv=new QMovie(":/picture/gou.gif");
};
//重寫paintEvent函數
class CircularLabel:public QLabel
{
public:CircularLabel(QWidget *parent=nullptr):QLabel(parent){}void paintEvent(QPaintEvent *event) override{QLabel::paintEvent(event);//調用基類的paintEvent以處理標準繪制QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);//抗鋸齒QPixmap pixmap(":/picture/qq0.jpg");//加載圖片pixmap=pixmap.scaled(this->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation);QPainterPath path;path.addEllipse(0,0,this->width(),this->height());//創建一個圓形路徑painter.setClipPath(path);//設置裁剪路徑為圓形painter.drawPixmap(0,0,pixmap);//繪制圖片}
};
#endif // WIDGET_H
main.cpp:
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
widget.cpp:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//設置窗口標題this->setWindowTitle("QQ快聊");//設置窗口圖標this->setWindowIcon(QIcon(":/picture/qq.png"));//給動圖類mv設置父組件mv->setParent(this);//給標簽logLab1填充動圖mvui->logLab1->setMovie(mv);//將動圖mv設置自適應標簽ui->logLab1->setScaledContents(true);//讓動圖動起來mv->start();//給標簽logLab2填充圖片ui->logLab2->setPixmap(QPixmap(":/picture/qqq.jpg"));//將標簽logLab2圖片設置自適應標簽ui->logLab2->setScaledContents(true);//創建一個圓形標簽CircularLabel *headLab=new CircularLabel(this);//移動標簽到固定位置headLab->move(350,150);//重設標簽大小headLab->resize(111,111);//給標簽userNameLab填充圖片ui->userNameLab->setPixmap(QPixmap(":/picture/userName.jpg"));//將標簽userNameLab圖片設置自適應標簽ui->userNameLab->setScaledContents(true);//給標簽passwdLab填充圖片ui->passwdLab->setPixmap(QPixmap(":/picture/passwd.jpg"));//將標簽passwdLab圖片設置自適應標簽ui->passwdLab->setScaledContents(true);//給行編輯器userNameEdit設置占位ui->userNameEdit->setPlaceholderText("QQ賬號/手機號/郵箱");//給行編輯器passwdEdit設置占位ui->passwdEdit->setPlaceholderText("密碼");//給行編輯器passwdEdit設置顯示模式 輸入該行編輯器時內容不可見ui->passwdEdit->setEchoMode(QLineEdit::Password);//手動連接系統提供的信號和槽 基于qt4版本 該連接是不友好connect(ui->loginBtn,SIGNAL(clicked()),this,SLOT(my_slot1()));//手動連接系統提供的信號和自定義的槽函數 基于qt5版本 該連接是友好的connect(ui->loginBtn,&QPushButton::clicked,this,&Widget::my_slot2);
}Widget::~Widget()
{delete ui;
}void Widget::my_slot1()
{//獲取行編輯器userNameEdit和passwdEdit輸入的內容并和要求的admin和123456進行比對if(ui->userNameEdit->text()=="admin"&&ui->passwdEdit->text()=="123456"){qDebug() << "登錄成功";close();}
}
void Widget::my_slot2()
{//獲取行編輯器userNameEdit和passwdEdit輸入的內容并和要求的admin和123456進行比對if(ui->userNameEdit->text()!="admin"||ui->passwdEdit->text()!="123456"){qDebug() << "登錄失敗";ui->passwdEdit->clear();}
}
widget.ui:
運行結果:
登錄失敗:
?登錄成功:
?