Qt day2

2023-09-18 21:43:00

作业:

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

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

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

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QPainter>
#include <QMessageBox>
#include "second.h"

QT_BEGIN_NAMESPACE
namespace Ui {class Widget;}
QT_END_NAMESPACE




class Widget : public QWidget
{
    Q_OBJECT

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


signals:
    void btn1_signal();

public slots:
    void btn1_slot();

    void btn2_slot();

private:

    Ui::Widget *ui;
    QPushButton *btn1;
    QPushButton *btn2;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QLabel *lab1;
    QLabel *lab2;
    QLabel *lab3;

    Second *s1;


};
#endif // WIDGET_H

second.h:

#ifndef SECOND_H
#define SECOND_H

#include <QWidget>
#include <QMessageBox>


namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

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

public slots:
    void jump_slot1();

private:
    Ui::Second *ui;
};

#endif // SECOND_H

main.cpp:

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

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


    return a.exec();
}

 second.cpp:

#include "second.h"
#include "ui_second.h"

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

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

void Second::jump_slot1(){

    this->show();
}

 

 widget.cpp:

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include <QIcon>


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



    //将图形化界面的名字改成登录界面
    this->setWindowTitle("Login screen");
    //将图标改成自定义图片内容
    this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));
    //设置ui界面的大小为合适的大小
    this->setFixedSize(QSize(400,300));

    //插入一个图标
    lab1 = new QLabel(this);
    lab1->resize(QSize(400,125));
    lab1->move(0,0);
    //内容要是一张图片
    lab1->setPixmap(QPixmap(":/icon/logo.png"));
    //设置图片填充
    lab1->setScaledContents(true);

    //插入两个行编辑器
    edit1 = new QLineEdit(this);
    edit1->resize(QSize(240,40));
    edit1->move(110,150);
    edit1->setPlaceholderText("账号");
    //输入密码
    edit2 = new QLineEdit(this);
    edit2->resize(QSize(240,40));
    edit2->move(edit1->x(),edit1->y()+55);
    edit2->setPlaceholderText("密码");
    //回显模式是密码模式
    edit2->setEchoMode(QLineEdit::Password);


    lab2 = new QLabel(this);
    lab2->resize(50,40);
    lab2->setPixmap(QPixmap(":/icon/userName.jpg"));
    lab2->setScaledContents(true);
    lab2->move(edit1->x()-60,edit1->y());

    lab3 = new QLabel(this);
    lab3->resize(50,40);
    lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));
    lab3->setScaledContents(true);
    lab3->move(edit2->x()-60,edit2->y());

    //两个按钮
    QPushButton *btn1 = new QPushButton("登录",this);
    QPushButton *btn2 = new QPushButton("取消",this);
    //重设尺寸
    btn1->resize(QSize(60,30));
    btn2->resize(btn1->size());
    //移动位置
    btn1->move(120,edit2->y()+55);
    btn2->move(btn1->x()+120,edit2->y()+55);

    btn1->setIcon(QIcon(":/icon/login.png"));
    btn2->setIcon(QIcon(":/icon/cancel.png"));

    //将两个按钮连到自己定义的槽函数中

    connect(btn1,&QPushButton::clicked,this,&Widget::btn1_slot);
    connect(btn2,&QPushButton::clicked,this,&Widget::btn2_slot);
    connect(this, &Widget::btn1_signal,s1,&Second::jump_slot1);

}

void Widget::btn1_slot(){


    QMessageBox msgbox;

    if(edit1->text()=="admin" && edit2->text()=="123456"){

        msgbox.setIcon(QMessageBox::NoIcon);
        msgbox.setWindowTitle("LOL");
        msgbox.setText("登录成功");
        msgbox.setStandardButtons(QMessageBox::Yes);
        msgbox.setDefaultButton(QMessageBox::Yes);
        int i = msgbox.exec();

        if(i == QMessageBox::Yes)
            this->close();
      


    }
    else{
        int ret;
        msgbox.setIcon(QMessageBox::Critical);
        msgbox.setWindowTitle("LOL");
        msgbox.setText("账号密码错误,是否重新登录?");
        msgbox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
        msgbox.setDefaultButton(QMessageBox::Ok);

        ret = msgbox.exec();

        if(ret == QMessageBox::Ok){       
            edit2->clear();
        }
        else if(ret == QMessageBox::Cancel){

            this->close();

        }
    }
}
void Widget::btn2_slot(){

    int ret =QMessageBox::warning(
                this,
                "LOL",
                "是否退出?",
                QMessageBox::Yes|QMessageBox::No,
                QMessageBox::Yes);

    if(ret == QMessageBox::No){
        this->close();
    }
}

Widget::~Widget()
{
}

 

 

更多推荐

Unity中Shader的模板测试

文章目录前言什么是模板测试1、模板缓冲区2、模板缓冲区中存储的值3、模板测试是什么(看完以下流程就能知道模板测试是什么)模板测试就是在渲染,后渲染的物体前,与渲染前的模板缓冲区的值进行比较,选出符合条件的部分,对后渲染的物体进行渲染前言Unity中Shader的模板测试什么是模板测试1、模板缓冲区2、模板缓冲区中存储的

C++ 指针

C++指针学习C++的指针既简单又有趣。通过指针,可以简化一些C++编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的C++程序员,学习指针是很有必要的。正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个

网络安全(黑客)自学

前言我是去年8月22日才正式学习网络安全的,因为在国营单位工作了4年,在广东一个月工资只有5000块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。而且国营单位的气氛是你干的多了,领导觉得你有野心,你干的不多,领导却觉得你这个人不错。我才24周岁,实在的受不了这种工作氛围,情绪已经压制了很多久,一

竞赛选题 基于深度学习的人脸表情识别

文章目录0前言1技术介绍1.1技术概括1.2目前表情识别实现技术2实现效果3深度学习表情识别实现过程3.1网络架构3.2数据3.3实现流程3.4部分实现代码4最后0前言🔥优质竞赛项目系列,今天要分享的是基于深度学习的人脸表情识别该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🧿更多资料,项目分享:https:/

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。二、企业通过

基于Matlab实现自动泊车(垂直泊车)

自动泊车是一项非常有趣和实用的技术,它可以让车辆在没有人为干预的情况下自动停放在合适的位置上。在这篇文章中,我们将介绍如何使用Matlab实现自动泊车。首先,我们需要了解自动泊车的基本原理。自动泊车系统通常包括车辆、传感器和控制算法。传感器可以用来检测周围的环境,例如通过摄像头、超声波传感器或激光雷达来检测车辆周围的障

数据治理在数字化转型中的重要性

在当今数字化时代,企业的成功与否往往取决于它们对数据的处理和管理能力。数据治理作为数字化转型的关键组成部分,对于帮助企业有效管理和利用数据,实现业务增长和创新至关重要。本文将探讨为什么数字化转型必须进行数据治理,并介绍数据治理的几个关键优势。随着技术的进步和数字化转型的发展,大量的数据被不断产生和积累。这些数据代表了企

WPF中DataGrid控件绑定数据源

步骤创建数据源:首先,我们需要创建一个数据源,可以是一个集合(如List、ObservableCollection等),也可以是一个DataTable对象。数据源中的每个元素代表一行数据。设置DataGrid的ItemsSource属性:在XAML中,我们可以通过设置DataGrid的ItemsSource属性来将数据

视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓

​LeetCode解法汇总2490. 回环句

目录链接:力扣编程题-解法汇总_分享+记录-CSDN博客GitHub同步刷题项目:https://github.com/September26/java-algorithms原题链接:力扣描述:句子是由单个空格分隔的一组单词,且不含前导或尾随空格。例如,"HelloWorld"、"HELLO"、"helloworldh

Docker从认识到实践再到底层原理(五)|Docker镜像

前言那么这里博主先安利一些干货满满的专栏了!首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。高质量博客汇总然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!Docker从认识到实践再到底层原理第五章-镜像Docker镜像

热文推荐