使用手動連接,將登錄框中的取消按鈕使用qt4版本的連接到自定義的槽函數中,在自定義的槽函數中調用關閉函數
將登錄按鈕使用qt5版本的連接到自定義的槽函數中,在槽函數中判斷ui界面上輸入的賬號是否為"admin",密碼是否為"123456",如果賬號密碼匹配成功,則輸出“登錄成功”,并關閉該界面,如果匹配失敗,則輸出登錄失敗,并將密碼框中的內容清空
頭文件:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QIcon>
#include <QLabel> //標簽類
#include <QMovie> //動圖類
#include <QLineEdit> //行編輯器類
#include <QPushButton> //按鈕類QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void my_signal1();public slots:void my_slots1();void my_slots2();private:Ui::Widget *ui;QLabel *lab1;QLabel *lab2;QLabel *lab3;QLineEdit *edit1;QLineEdit *edit2;QPushButton *btn1;QPushButton *btn2;
};
#endif // WIDGET_H
源文件:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//設置并固定窗口大小this->setFixedSize(600,500);
// //設置窗口的圖片
// this->setWindowIcon(QIcon(":/pictrue/1.jpg"));
// //設置窗口的標題
// this->setWindowTitle("登錄賬號界面");this->setWindowFlag(Qt::FramelessWindowHint);//創建一個標簽類指針同時將父對象設為當前this指針指向的對象wlab1 = new QLabel(this);//設置標簽大小lab1->resize(600,150);//創建一個動圖類指針接收動圖QMovie *mv = new QMovie(":/pictrue/dt.gif");//將動圖放入標簽中lab1->setMovie(mv);//讓動圖動起來mv->start();//自動適應lab1lab1->setScaledContents(true);//創建一個標簽類指針同時將父對象設為當前this指針指向的對象wlab2 = new QLabel(this);//設置標簽的大小lab2->resize(50,50);//移動標簽的位置lab2->move(170,200);//設置標簽的圖片lab2->setPixmap(QPixmap(":/pictrue/2.jpg"));//自動適應lab2lab2->setScaledContents(true);//創建一個標簽類指針同時將父對象設為當前this指針指向的對象wlab3 = new QLabel(this);//設置標簽的大小lab3->resize(50,50);//移動標簽的位置lab3->move(170,260);//設置標簽的圖片lab3->setPixmap(QPixmap(":/pictrue/3.jpg"));//自動適應lab3lab3->setScaledContents(true);//創建一個行編輯器類的指針同時將父對象設為當前this指針指向的對象wedit1 = new QLineEdit(this);//設置行編輯器的大小edit1->resize(200,50);//移動行編輯器的位置edit1->move(220,200);//占位edit1->setPlaceholderText("賬號");//創建一個行編輯器類的指針同時將父對象設為當前this指針指向的對象wedit2 = new QLineEdit(this);//設置行編輯器的大小edit2->resize(200,50);//移動行編輯器的位置edit2->move(220,260);//占位edit2->setPlaceholderText("密碼");//設置顯示模式edit2->setEchoMode(QLineEdit::Password);//創建一個按鈕類的指針同時設置文本并將父對象設為當前this指針指向的對象wbtn1 = new QPushButton("登錄",this);//設置按鈕大小btn1->resize(140,50);//移動按鈕的位置btn1->move(150,350);//設置按鈕的顏色btn1->setStyleSheet("background-color:rgb(40,200,250)");//創建一個按鈕類的指針同時設置文本并將父對象設為當前this指針指向的對象wbtn2 = new QPushButton("取消",this);//設置按鈕大小btn2->resize(140,50);//移動按鈕的位置btn2->move(300,350);//設置按鈕的顏色btn2->setStyleSheet("background-color:rgb(40,200,250)");//手動連接信號和自定義的槽函數 基于qt4版的連接 btn2發信號給當前窗口connect(btn2,SIGNAL(clicked()),this,SLOT(my_slots1()));//手動連接信號和自定義的槽函數 基于qt5版的連接 btn1發信號給當密碼編輯器connect(btn1,&QPushButton::clicked,this,&Widget::my_slots2);
}Widget::~Widget()
{delete ui;
}//自定義的槽函數
void Widget::my_slots1()
{//關閉當前窗口this->close();
}void Widget::my_slots2()
{//檢查賬號密碼是否正確if(edit1->text() == "admin" && edit2->text() == "123456"){qDebug() << "登錄成功";//成功則關閉窗口this->close();}else{qDebug() << "登錄失敗";//失敗則清空密碼編輯器的內容edit2->setText("");}
}
主函數文件:
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
運行結果:
思維導圖: