QT实现窗口的账户以及密码判断登录和退出

一、作业要求:

1、找出槽函数调用两次的原因

        在Qt中使用信号调用槽函数时,当槽函数的函数名定义格式为 “on_对象名_信号”时,则不需要在使用connect来连接信号与槽函数,系统会自动连接信号与槽函数。如果再次使用了connect来连接,则会调用两次槽函数。

2、完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面

实现过程:

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:
    void onclose();
    void sign();


private:
    QLabel *lab1;       //无参构造
    QLabel *lab2;       //定义标签,顺便指定父组件
    QLabel *lab3;       //定义标签,顺便指定父组件
    QLineEdit *edit1;        //无参构造
    QLineEdit *edit3;
    QPushButton *btn;  //无参构造
    QPushButton *btn1;    //构造按钮时,指定父组件
    QMessageBox *box;       //弹窗

    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

源文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 
#include 
#include 
#include 
//完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,
//如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置窗口标题
    this->setWindowTitle(QString("QQ"));       //使用匿名对象进行传递
    //设置窗口图标
    this->setWindowIcon(QIcon("F:/2022_Cplus_pro/day8/01_frame/1.png"));

    //设置固定尺寸
    this->setFixedSize(800,600);

    //定义标签Lable
    lab1=new QLabel;       //无参构造
    lab1->setParent(this);         //设置父组件
    lab1->setText("账户:");          //设置文本信息
    lab1->move(230,250);           //移动组件位置
    lab1->resize(200,40);

    lab2=new QLabel(this);       //定义标签,顺便指定父组件
    lab2->setText("密码:");             //设置文本信息
    lab2->move(230,330);
    lab1->resize(200,40);

    lab3=new QLabel(this);       //定义标签,顺便指定父组件
    lab3->resize(800,200);
    lab3->setScaledContents(true);
    lab3->setPixmap(QPixmap("F:/2022_Cplus_pro/day8/01_frame/2.png"));

    //定义行编辑器edit
    edit1=new QLineEdit;        //无参构造
    edit1->setParent(this);                 //设置父组件
    edit1->move(300,250);                 //移动组件位置
    edit1->resize(200,40);

    edit3=new QLineEdit(this);
    edit3->move(300,330);                 //移动组件位置
    edit3->setEchoMode(QLineEdit::Password);
    edit3->resize(200,40);

    //自定义一个按钮button
     btn=new QPushButton;  //无参构造
     btn->setParent(this);      //设置父组件函数
     btn->resize(80,40);       //重新设置按钮框大小
     btn->setText("登录");        //设置按钮上的文本信息
     btn->move(400,400);            //移动组件位置

     //定义按钮1,顺便指定父组件
     btn1=new QPushButton(this);    //构造按钮时,指定父组件
     btn1->setText("按钮1");                     //设置按钮上的文本信息
     btn1->resize(80,40);                        //重新设置按钮框大小
     btn1->setText("取消");                      //设置按钮上的文本信息
     btn1->move(500,400);                       //移动组件位置

     connect(btn1,SIGNAL(clicked()),this,SLOT(onclose()));      //连接按钮btn1关闭窗口信号和槽函数
     connect(btn,SIGNAL(clicked()),this,SLOT(sign()));          //连接按钮btn登录信号和槽函数
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::sign()     //登录槽函数
{
    box=new QMessageBox;                        //弹窗
    box->setWindowTitle("提示");
    if(QString(this->edit1->text())=="admin")
        if(QString(this->edit3->text())=="123456")
        {
                box->setText("登录成功");
                box->show();
                box->exec();//等待用户响应
                close();
        }
        else if(QString(this->edit3->text())==0)
        {
            box->setText("请输入密码");
            box->show();//展示
            box->exec();//等待用户响应
        }
        else
        {
            box->setText("密码错误");
            this->edit3->clear();
            box->show();//展示
            box->exec();//等待用户响应
        }
    else if(QString(this->edit1->text())==0)
    {
        box->setText("请输入账号");
        box->show();//展示
        box->exec();//等待用户响应
    }
    else
    {
        box->setText("账号错误");
        box->show();//展示
        box->exec();//等待用户响应
    }
}

void MainWindow::onclose()          //退出槽函数
{  
    close();
}

 

测试文件

#include "mainwindow.h"

#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

实现效果:

QT实现窗口的账户以及密码判断登录和退出_第1张图片

 QT实现窗口的账户以及密码判断登录和退出_第2张图片

 

你可能感兴趣的:(ui,qt,开发语言)