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();
    }
}
相关推荐
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超1 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int1 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++