Qt-workday2

完善登录界面

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

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

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

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

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>  //添加按钮头文件
#include<QDebug>
#include<QLineEdit>   //行编辑器类的头文件
#include<QLabel>     //标签类的头文件
#include<QCheckBox>
#include<QPainter>
#include<QMessageBox>

class Widget : public QWidget
{
    Q_OBJECT

signals:
    void jump_success();  //自定义跳转信号


public slots:

    void login_in();

    void success();
    void failed();
    void cancel_();

public:

    QLabel *lab1;   //logo图片
    QLabel *lab2;    //账户标签图像
    QLabel *lab3;    //密码标签图像
    QLabel *label;   //圆形头像

    QLineEdit *edit1;  //账户行编辑器
    QLineEdit *edit2;  //密码行编辑器

    QPushButton *btn1;  //找回密码按钮
    QPushButton *btn2;  //登录按钮
    QPushButton *btn3;  //注册按钮
    QPushButton *btn4;  //取消登录按钮

    QCheckBox *box1;    //自动登录框
    QCheckBox *box2;    //记住密码选项框

    Widget(QWidget *parent = 0);
    ~Widget();
};



#endif // WIDGET_H

widget.cpp:

#include "widget.h"

//登陆时的弹框
void Widget::login_in()
{
    if(this->edit1->text() == "admin" && this->edit2->text() == "123456")
    {
        emit success();
        //connect(this->btn2,&QPushButton::clicked,this,&Widget::success); //匹配成功
    }
    else {
        emit failed();
        //connect(this->btn2,&QPushButton::clicked,this,&Widget::failed);  //匹配失败
    }
}

//登录成功
void Widget::success()
{
    //实例化一个消息对话框的对象
    QMessageBox box(                             //构造出一个box对象,使用有参构造完成
                    QMessageBox::Information,       //图标
                    "提示信息",                  //对话框标题
                    "登录成功",             //文本内容
                    QMessageBox::Ok,      //提供的按钮
                    this);                         //父组件
    //将对象  进入运行态
    int ret = box.exec();

    //对用户选择的结果进行判断
    if(ret == QMessageBox::Ok)
    {
        emit jump_success();   //发射跳转信号
        this->close(); //关闭登录界面
    }
    this->close();

}
//登陆失败
void Widget::failed()
{
    QMessageBox::StandardButton ret = QMessageBox::information(                   //调用静态成员函数,需要加上类名和作用与限定符
                                                            this,             //父组件
                                                            "提示信息",           //对话框标题
                                                            "账号密码不匹配,是否重新登录",    //对话框文本内容
                                                            QMessageBox::Ok|QMessageBox::Cancel, //提供的按钮
                                                            QMessageBox::Ok);    //默认按钮
    //对用户点击的结果进行判断
    if(ret == QMessageBox::Ok)
    {
        //清除密码框中的内容,继续登录
        edit2->clear(); //清空文本框内容
    }
    else if(ret == QMessageBox::Cancel)
    {
        //关闭界面
        this->close();
    }
}


//取消按钮弹框
void Widget::cancel_()
{
    //实例化一个消息对话框的对象
    QMessageBox box(                             //构造出一个box对象,使用有参构造完成
                    QMessageBox::Information,       //图标
                    "提示信息",                  //对话框标题
                    "是否退出登录?",             //文本内容
                    QMessageBox::Yes|QMessageBox::No,  //提供的按钮
                    this);                         //父组件
    //将对象  进入运行态
    int ret = box.exec();

    //对用户选择的结果进行判断
    if(ret == QMessageBox::Yes)
    {
        this->close();//关闭整个页面

    }
    else if(ret == QMessageBox::No)
    {

    }
}

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    //设置窗口固定大小
    this->setFixedSize(428,300);

    //窗口图标&窗口标题
    //更改窗口图像
    this->setWindowIcon(QIcon(":/icon/QQ.png"));
    this->setWindowTitle("QQ");

    //logo图片
    lab1 = new QLabel(this);
    lab1->resize(428,100);
    lab1->move(0,0);
    lab1->setStyleSheet("background-color:pink;");

    //头像
    QPixmap pixmap(":/icon/touxiang.jpeg"); // 加载图像
    QPixmap roundedPixmap(pixmap.size()); // 创建一个圆形图像
    roundedPixmap.fill(Qt::transparent); // 填充透明色

    QPainter painter(&roundedPixmap);
    painter.setRenderHint(QPainter::Antialiasing, true); // 设置抗锯齿
    QPainterPath path;
    path.addEllipse(roundedPixmap.rect()); // 创建圆形路径
    painter.setClipPath(path); // 设置剪裁路径
    painter.drawPixmap(pixmap.rect(), pixmap); // 在剪裁的路径内绘制原图像

    label = new QLabel(this);
    label->setPixmap(roundedPixmap); // 将圆形图像设置给 QLabel
    label->resize(68,68);
    label->move(184,60);
    label->setScaledContents(true);

    //账户
    lab2 = new QLabel(this);

    edit1 = new QLineEdit("QQ号码/手机/邮箱",this);
    edit1->resize(200,30);
    edit1->move(140,130);

    lab2->resize(25,25);
    lab2->move(110,130);
    lab2->setScaledContents(true);
    lab2->setPixmap(QPixmap(":/icon/denglu.png"));

    //手动构造一个行编辑器,密码
    lab3 = new QLabel(this);

    edit2 = new QLineEdit(this);
    edit2->resize(200,30);
    edit2->move(140,175);
    edit2->setEchoMode(QLineEdit::Password);  //设置回显模式为密文模式
    edit2->setPlaceholderText("密码");  //设置占位文本

    lab3->resize(25,25);
    lab3->move(110,175);
    lab3->setScaledContents(true);
    lab3->setPixmap(QPixmap(":/icon/denglumima.png"));

    //自动登录、取消密码
    box1 = new QCheckBox;
    box1->setParent(this);   //将该界面作为组件的父组件
    //重新设置大小
    box1->resize(80,50);
    box1->setText("自动登录");
    box1->move(110,195);

    box2 = new QCheckBox(this);  //在构造时给定父组件
    //重新设置大小
    box2->resize(80,50);
    box2->setText("记住密码");
    box2->move(200,195);

    //找回密码
    btn1 = new QPushButton(this);
    btn1->setText("找回密码");
    btn1->resize(80,45);
    btn1->move(275,197);
    btn1->setStyleSheet("border:none;");


    //登录
    btn2 = new QPushButton(this);
    this->
    btn2->setText("登录");
    btn2->resize(100,30);
    btn2->move(110,240);
    btn2->setIcon(QIcon(":/icon/denglu_1.png"));
    btn2->setStyleSheet("background-color:skyblue;");
    connect(this->btn2,&QPushButton::clicked,this,&Widget::login_in);

    //取消(登录)按钮
    btn4 = new QPushButton(this);
    this->
    btn4->setText("取消");
    btn4->resize(100,30);
    btn4->move(230,240);
    btn4->setIcon(QIcon(":/icon/quxiao.png"));
    btn4->setStyleSheet("background-color:skyblue;");
    connect(this->btn4,&QPushButton::clicked,this,&Widget::cancel_);

    //注册账号
    btn3 = new QPushButton(this);
    btn3->setText("注册账号");
    btn3->resize(80,45);
    btn3->move(0,260);
    btn3->setStyleSheet("border:none;");

}

Widget::~Widget()
{

}

main.cpp:

#include "widget.h"
#include <QApplication>
#include"form.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Form f;

    QObject::connect(&w,&Widget::jump_success,&f,&Form::jump_slot);

    return a.exec();
}

form.h:

#ifndef FORM_H
#define FORM_H

#include <QWidget>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT
public slots:
    void jump_slot();

public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();

private:
    Ui::Form *ui;
};

#endif // FORM_H

form.cpp:

#include "form.h"
#include "ui_form.h"

//登陆成功后处理界面跳转函数对应的槽函数的实现
void Form::jump_slot()
{
    this->show();  //将该界面进行展示
}

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

Form::~Form()
{
    delete ui;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值