10.8 Qt登录界面

cpp 复制代码
#include "widget.h"
#include <QMessageBox>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent),neww(nullptr)
{
    this->setWindowTitle("Plane");
    this->setWindowIcon(QIcon(":/picture/111.png"));
    btn1=new QPushButton;

    this->setFixedSize(640,480);
    btn1->setParent(this);   //将界面设置为父组件
    btn1->setText("登录");    //设置按钮文本
    btn1->move(200,350);
    btn1->resize(120,40);
    btn1->setStyleSheet("color:white;background-color:skyblue;border-radius:10px;"); //设置按钮样式表
    btn1->setObjectName("btn1");

    btn2=new QPushButton(this);
    btn2->setText("取消");
    btn2->move(btn1->x()+btn1->width()+20,btn1->y());
    btn2->resize(btn1->size());
    btn2->setStyleSheet("background-color:white;border-radius:10px;");

    acc =new QLineEdit(this);
    acc->resize(260,30);
    acc->move(200,250);
    acc->setAlignment(Qt::AlignCenter);  //文本居中显示
    acc->setEchoMode(QLineEdit::Normal); //设置文本显示模式
    acc->setPlaceholderText("请输入账号"); //设置占位文本

    pwd =new QLineEdit(this);
    pwd->resize(acc->size());
    pwd->move(acc->x(),acc->y()+acc->height()+20);
    pwd->setEchoMode(QLineEdit::Password);
    pwd->setPlaceholderText("请输入密码");
    pwd->setAlignment(Qt::AlignCenter);

    QLabel *logo=new QLabel;
    logo->setParent(this);
    logo->resize(150,150);
    logo->setPixmap(QPixmap(":/picture/111.png"));  //插入图片显示
    logo->setScaledContents(true);  //图片填充
    logo->move(250,60);

    QObject obj;
    //obj.connect(this->btn2,SIGNAL(clicked()),this,SLOT(close()));

    connect(btn1, &QPushButton::clicked, this, &Widget::on_btn1_clicked);
    connect(btn2, &QPushButton::clicked, this, &Widget::on_btn2_clicked);
}



Widget::~Widget()
{
}


void Widget::on_btn1_clicked() //登录按钮
{
    if(acc->text()==pwd->text())
    {                                        //基于属性
        QMessageBox msg(QMessageBox::NoIcon, //无图标对话框
                        "登录",   //对话框标题
                        "登录成功!", //对话框文本
                        QMessageBox::Ok, //提供的按钮
                        this); //父类指针
        int login=msg.exec();
        if(login==QMessageBox::Ok)
        {
            neww=new Second();
            neww->show();
            this->close();
        }
    }else if(acc->text()!=pwd->text())
    {
        QMessageBox fail(QMessageBox::Critical,
                         "登录失败",
                         "账号密码不匹配,是否重新输入?",
                         QMessageBox::Ok|QMessageBox::No,
                         this);
        int log=fail.exec();
        if(log==QMessageBox::Ok)
        {
            pwd->clear();
        }else if(log==QMessageBox::No)
        {
            this->close();
        }
    }
}


void Widget::on_btn2_clicked()
{
    QMessageBox::StandardButton flag;         //基于静态成员函数
    flag=QMessageBox::question(this,
                               "退出",
                               "是否退出?",
                               QMessageBox::Ok|QMessageBox::No,
                               QMessageBox::No);  //默认选中的按钮
    if(flag==QMessageBox::Ok)
    {
        this->close();
    }
}
相关推荐
cpp_learners10 分钟前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
勤奋的树懒19 分钟前
从手写 SQL 到 Windows 工具:致远 OA 文件清理实践
数据库·sql·windows server·致远oa
君顾120 分钟前
外卖CPS软件开发实战:从系统架构到部署全流程指南
java·开发语言·外卖
笃行35026 分钟前
OceanBaseVS金仓:一条 SQL 的两条路——KingbaseES 的性能竞争力从哪来
数据库
其实防守也摸鱼39 分钟前
每天一个知识点——RCE漏洞
运维·服务器·数据库·windows·安全·github·漏洞
AIFQuant40 分钟前
Python实时外汇行情接入实战:WebSocket与REST K线查询
开发语言·python·websocket
TDengine (老段)41 分钟前
TDengine 常见问题 TOP2
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
笃行3501 小时前
数据迁移工具 KDMS 帮我把一本糊涂账算清了
数据库
名字还没想好☜1 小时前
Java NIO ByteBuffer 实战:flip/clear/compact 三个绕晕人的方法与 position/limit 心智模型
java·开发语言·后端·spring·nio
小溪学编程2 小时前
AQS 原理详解:从 CLH 队列到 ReentrantLock 的实现
java·开发语言