Qtday2

完善登录框

点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:消息对话框,对象版和静态成员函数版至少各实现一个

#include "widget.h"
#include "ui_widget.h"
#include //消息对话框头文件




Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    s1 = new Form;

    connect(this, &Widget::jump, s1, &Form::jump_slot);
    this->setFixedSize(550,400);//设置固定尺寸
    this->setWindowTitle("Widget");//设置窗口标题
    this->setWindowIcon(QIcon(":/wodepeizhenshi.png"));//设置窗口图标

    //实例化一个标签
    Lab1 = new QLabel;
    Lab1->setParent(this);
    Lab1->resize(550,150);//重新设置尺寸
    Lab1->setPixmap(QPixmap(":/logo.png"));
    Lab1->setScaledContents(true);//设置内容自适应

    userNameLbl = new QLabel;
    userNameLbl->setParent(this);//指定父组件
    userNameLbl->resize(40,40);//重新设置尺寸
    userNameLbl->move(100,220);
    userNameLbl->setPixmap(QPixmap(":/userName.png"));
    userNameLbl->setScaledContents(true);//设置内容自适应


    pwdLbl = new QLabel;
    pwdLbl->setParent(this);
    pwdLbl->resize(40,40);//重新设置尺寸
    pwdLbl->move(100,270);
    pwdLbl->setPixmap(QPixmap(":/passwd.png"));
    pwdLbl->setScaledContents(true);//设置内容自适应


    //实例化一个按钮并给定图标,文本内容,父组件
    loginbtn = new QPushButton(QIcon(":/login.png"), "登录", this);
    loginbtn->resize(100,50);//设置按钮大小
    loginbtn->move(150,325);//设置按钮移动位置

    //将按钮的点击信号连接到自定义函数中
    connect(loginbtn,&QPushButton::clicked, this, &Widget::my_slot);


    quitbtn = new QPushButton(QIcon(":/cancel.png"),"取消", this);
    quitbtn->resize(loginbtn->size());
    quitbtn->move(loginbtn->x()+150,loginbtn->y());
    //连接自带的关闭函数
    connect(quitbtn,&QPushButton::clicked, this, &Widget::on_quitbtn_clicked);
    connect(this, &Widget::my_signal, this, &Widget::close);

    // 实例化一个行编辑器
    userNameEd = new QLineEdit(this);
    userNameEd->resize(250,40);
    userNameEd->move(userNameLbl->x()+50,userNameLbl->y());

    // 实例化一个行编辑器
    pwdEd = new QLineEdit(this);
    pwdEd->resize(250,40);
    pwdEd->move(pwdLbl->x()+50,pwdLbl->y());
    pwdEd->setEchoMode(QLineEdit::Password);//设置回显模式
}

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

void Widget::my_slot()
{
    if(userNameEd->text().trimmed() == tr("admin") && pwdEd->text().trimmed() == tr("123456"))
    {
        QMessageBox::information(this,
                "登陆成功",
                "成功登录",
                 QMessageBox::Ok);
        emit jump();

        this->hide();
    }else
    {
        QMessageBox::critical(this,
                "错误",
                "账号密码不匹配,是否重新登陆",
                 QMessageBox::Ok|QMessageBox::Cancel);
        emit my_signal();
        userNameEd->clear();
        pwdEd->clear();
    }
}

void Widget::on_quitbtn_clicked()
{
    QMessageBox box(QMessageBox::Question,
            "呵呵",
            "是否退出登录",
             QMessageBox::Yes|QMessageBox::No,
                    this);
    int ret = box.exec();

    if(ret == QMessageBox::Yes)
    {
          emit my_signal();
    }else
    {

    }
}

void Widget::on_loginbtn_clicked()
{
    emit jump();

    this->hide();
}

 Qtday2_第1张图片

你可能感兴趣的:(c++)