QT---day2---9.18

2023-09-18 23:01:05

完善登录框

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

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

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

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

second.h

#ifndef SECOND_H
#define SECOND_H
 
#include <QWidget>
#include <QDebug>
namespace Ui {
class Second;
}
 
class Second : public QWidget
{
    Q_OBJECT
public:
    void newslot();
public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();
 
private:
    Ui::Second *ui;
};
 
#endif // SECOND_H

 widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QDebug>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
 
signals:
    void mysignals();
 
 
public slots:
    void userLogin();
    void userExit();
 
 
private:
QPushButton *btn1;
 
QPushButton *btn2;
QLabel *lab1;
QLabel *lab2;
QLabel *lab3;
QLineEdit *edit1;
QLineEdit *edit2;
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_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();
 
    Second s;
    QObject::connect(&w,&Widget::mysignals,&s,&Second::newslot);
 
    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);
}
void Second::newslot()
{
    this->show();            //将自己界面进行展示
}
 
Second::~Second()
{
    delete ui;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //构造一个登录按钮,并指定父组件,图标,和文本内容
     btn1=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\login.png"),"登录",this);
    //设置固定长度
    this->setFixedSize(400,300);
    //设置窗口标题
    this->setWindowTitle("Widget");
    //设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\wuhuiwu\\Desktop\\wodepeizhenshi.png"));
    //设置窗口尺寸
    btn1->setFixedSize(70,40);
    //移动按钮
    btn1->move(150,250);
    //再构造一个按钮,并给定父组件,图标,文本内容
    btn2=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\cancel.png"),"取消",this);
    //设置按钮尺寸
    btn2->setFixedSize(70,40);
    //移动按钮
    btn2->move(btn1->x()+70,btn1->y());
    //实例化一个标签并指定父组件
    lab1=new QLabel(this);
    //设置尺寸
    lab1->resize(400,150);
    //设置图片
    lab1->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\logo.png"));
     lab1->setScaledContents(true);
    //实例化一个标签并指定父组件
    lab2=new QLabel(this);
    //设置图片
    lab2->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\userName.jpg"));
    //设置尺寸
    lab2->resize(40,30);
    //引动图标
     lab2->move(120,160);
      lab2->setScaledContents(true);
     //实例化一个标签并指定父组件
     lab3=new QLabel(this);
     //设置图片
     lab3->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\passwd.jpg"));
     //设置尺寸
     lab3->resize(40,30);
     //移动图标
      lab3->move(lab2->x(),lab2->y()+50);
       lab3->setScaledContents(true);
      //构建一个文本编辑器
      edit1=new QLineEdit(this);
      //设置尺寸
      edit1->resize(100,30);
      edit1->move(lab2->x()+60,lab2->y());
      //设置占位文本
        edit1->setPlaceholderText("账号名");
 
      //构建一个文本编辑器
      edit2=new QLineEdit(this);
      //设置尺寸
      edit2->resize(100,30);
      edit2->move(edit1->x(),edit1->y()+50);
      //设置回显模式
       edit2->setEchoMode(QLineEdit::Password);
       edit1->setMaxLength(6);
 
       //登录
       connect(this->btn1,&QPushButton::clicked,this,&Widget::userLogin);
        //退出
       connect(this->btn2,&QPushButton::clicked,this,&Widget::userExit);
 
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::userLogin()
{
    QString accout=this->edit1->text();
    QString password=this->edit2->text();
    if(accout=="admin"&&password=="123456")
    {
        qDebug()<<"匹配成功";
 
    QMessageBox box(QMessageBox::NoIcon,"success","登录成功",
                    QMessageBox::Ok);
    int res=box.exec();
    if(res==QMessageBox::Ok)
    {
        this->close();
        emit  mysignals();
    }
    }else
    {
        qDebug()<<"账户密码不匹配,是否重新登录";
        QMessageBox box1(QMessageBox::Critical,"error","账户密码错误",
                         QMessageBox::Ok|QMessageBox::Cancel);
        int res=box1.exec();
        if(res==QMessageBox::Ok)
        {
            this->edit2->clear();
        }
        else if(res==QMessageBox::Cancel)
        {
 
            this->close();
        }
 
    }
 
 
}
void Widget::userExit()
{
    QMessageBox box2(QMessageBox::Warning,"退出","要退出吗?",
                     QMessageBox::Yes|QMessageBox::No);
    int res=box2.exec();
    if(res==QMessageBox::Yes)
 
    {
        this->close();
    }
    else if(res==QMessageBox::No)
    {
        this->edit1->clear();
        this->edit2->clear();
    }
}

 思维导图:

更多推荐

redis分布式锁

用于用户重复注册,点击过快,有可能会注册相同的手机号问题。给用户手机号枷锁一分钟时间,判断相同的手机号。判断下面这块代码执行时间是否超过一分钟时间,不论超没超过都会释放锁,下个同样的手机号再次注册,都得等到代码执行完毕后(或者是一分钟后)才能进行注册,防止有两个相同的手机号,两个线程,查询数据库都没存在,而注册了两次,

竞赛选题 基于机器视觉的银行卡识别系统 - opencv python

1前言🔥优质竞赛项目系列,今天要分享的是基于深度学习的银行卡识别算法设计该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🧿更多资料,项目分享:https://gitee.com/dancheng-senior/postgraduate2算法设计流程银行卡卡号识别技术原理是先对银行卡图像定位,保障获取图像绝对位置

SpringSecurity---内存认证和数据库认证

目录一、内存认证二、认证逻辑三、数据库认证(也就是用户名和密码在数据库中寻找)(1)mapper层(2)启动类添加扫描注解(3)编写UserDetailsService实现类一、内存认证@ConfigurationpublicclassSecurityConfig{//定义认证逻辑@BeanpublicUserDeta

springboot整合mybatis

整合SpringBoot与MyBatis框架的步骤如下:步骤1:创建SpringBoot项目-在IDE中创建一个新的SpringBoot项目。步骤2:添加相关依赖-在项目的pom.xml文件中添加以下依赖:<dependencies><dependency><groupId>org.springframework.bo

基于PHP的短视频SEO矩阵系统源码开发

随着短视频市场的爆发式增长,越来越多的企业开始寻求在短视频领域建立自己的品牌形象,增加用户粘性和获取更多流量。为此,一套高效的短视频SEO矩阵系统源码显得尤为重要。本文将介绍基于PHP语言的短视频SEO矩阵系统源码开发,帮助读者更好地了解该系统的实现原理和开发过程。一、系统概述短视频SEO矩阵系统是一套基于PHP语言开

千万级用户的大型网站,如何进行服务器压力预估?

前言:一般情况下,单台Tomcat服务器每秒支撑500请求,单台MySQL数据库每秒支撑5000左右的请求,单台Redis缓存支撑每秒几万请求。1、千万级用户量的压力预估假设大型网站预估用户数是1000万,那么根据28法则,每天会来访问这个网站的用户占到20%,也就是200万用户每天会过来访问。通常假设平均每个用户每次

Linux 文件权限基础:文件和目录权限管理指南

文章目录Linux文件权限基础1.引言1.1什么是文件权限1.2文件权限的重要性2.Linux文件权限基础2.1Linux文件系统简介2.2文件和目录的属性2.3权限类型:读、写和执行2.4所有者、组和其他用户2.5权限符号表示法:r、w、x和-2.6使用ls-l命令查看文件权限3.修改文件权限3.1使用chmod命令

【JVM】Java的内存模型(JMM)!

一、运行时数据区域划分JVM虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK1.8之前分为:线程共享(Heap堆区、MethodArea方法区)、线程私有(虚拟机栈、本地方法栈、程序计数器)JDK1.8以后分为:线程共享(Heap堆区、MetaSpace元空间)、线程私有(虚拟机栈、本

只需100GB内存,让Falcon 180B在你的电脑上起飞

一、前言自2023年5月,阿布扎比技术创新研究所(TII)发布了两个预训练的LLM:Falcon7B和Falcon-40B,这两个模型的表现十分优异,在OpenLLM排行榜上高居榜首。然而,在短短不到几个月的时间,研究所又推出了第三个重量级的大语言模型——Falcon180B。以下是有关Falcon180B的一些主要特

LLM 11-环境影响

LLM11-环境影响在本章中,首先提出一个问题:大语言模型对环境的影响是什么?这里给出的一个答案是:气候变化一方面,我们都听说过气候变化的严重影响(文章1、文章2):我们已经比工业革命前的水平高出1.2°C需要保持在1.5°C以下以避免气候危机根据目前的轨迹,在未来几十年内将达到2.7°C另一方面,我们看到训练大语言模

不断探索创新 促进中国信息技术发展——南京宏控科技有限公司董事长应富忠

应富忠,男,现任南京宏控科技有限公司董事长、电子系统工程高级工程师(技术五级)、自动化系统注册工程师,先后被评为“研究所级青年突击手”、“研究所级先进工作者”、“研究所级优秀共产党员”、“南京市级考级优秀”等荣誉称号,持有江苏省国防工办系统可靠性设计资质证书。南京市专家组成员,2003-2016年。江苏省科技计划项目评

热文推荐