QT 优化登录框

作业

优化登录框:

当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录

当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面

当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面 要求:静态成员函数版本和对象版本各至少实现一个

login.h代码

#ifndef LOGIN_H
#define LOGIN_H#include <QWidget>namespace Ui {
class Login;
}class Login : public QWidget
{Q_OBJECTpublic:explicit Login(QWidget *parent = nullptr);~Login();public slots:void jump_slot()   //用于接收跳转的槽函数{this->show();}private:Ui::Login *ui;
};#endif // LOGIN_H

widget.h代码

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMovie>
#include<QString>
#include <QMessageBox>class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();signals:void jump();public slots:void login_clicked();void on_questIconbtn_clicked();private:QPushButton *btn1;QPushButton *btn2;QLineEdit *edit1;QLineEdit *edit2;QLabel *lab1;QLabel *lab2;QLabel *lab3;QLabel *lab4;QMovie *movie;
};
#endif // WIDGET_H

login.cpp代码

#include "login.h"
#include "ui_login.h"Login::Login(QWidget *parent) :QWidget(parent),ui(new Ui::Login)
{ui->setupUi(this);
}Login::~Login()
{delete ui;
}

main.cpp代码

#include "widget.h"
#include "login.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();Login s;QObject::connect(&w,&Widget::jump,&s,&Login::jump_slot);return a.exec();
}

widget.cpp代码

#include "widget.h"
#include <QtDebug>Widget::Widget(QWidget *parent): QWidget(parent)
{//1、设置窗口this->setFixedSize(600,400);    //设置界面尺寸this->setWindowTitle("QQ");    //设置窗口标题//设置图标,使用匿名对象完成this->setWindowIcon(QIcon(":/icon/QQ.png"));//2、设置按钮//使用无参构造在堆区申请一个按钮this->btn1 = new QPushButton(this);btn1->setParent(this);  //将当前界面设置成组件的父组件btn1->setText("登录");    //设置按钮文本内容btn1->resize(80,40);    //重新设置按钮尺寸btn1->move(180,320);    //移动当前组件位置//设置样式表btn1->setStyleSheet("color:white;background-color:skyblue;border-radius:10px;");//使用有参构造,构造一个按钮,实例化对象时,顺便给定父组件this->btn2 = new QPushButton(this);btn2->setText("取消");//使用btn1的尺寸设置当前按钮的尺寸btn2->resize(btn1->size());//使用btn1的位置,确定btn2的位置btn2->move(btn1->x()+btn1->width()+10,btn1->y());//设置样式表btn2->setStyleSheet("color:white;background-color:skyblue;border-radius:10px;");//3、设置行编辑器//使用有参构造一个行编辑器this->edit1 = new QLineEdit(this);edit1->resize(250,40);  //重置尺寸edit1->move(150,160);edit1->setAlignment(Qt::AlignCenter);   //设置文本对齐方式edit1->setPlaceholderText("请输入QQ账号");    //设置占位文本//使用有参构造一个行编辑器this->edit2 = new QLineEdit(this);edit2->resize(edit1->size());   //重置尺寸edit2->move(150,220);  //移动位置edit2->setPlaceholderText("请输入QQ密码");    //设置占位文本edit2->setAlignment(Qt::AlignCenter);   //设置文本对齐方式edit2->setEchoMode(QLineEdit::Password);    //设置回显模式//4、设置标签this->lab1 = new QLabel(this);lab1->setText("账号");lab1->move(100,170);this->lab2 = new QLabel(this);lab2->setText("密码");lab2->move(100,230);this->lab3 = new QLabel(this);//lab3->setStyleSheet("background-color:skyblue;");lab3->move(0,0);lab3->setFixedSize(600,140);//给标签设置动图//创建一个movie对象this->movie = new QMovie(":/icon/bj.gif");//将动图对象放入到标签中lab3->setMovie(movie);//让动图动起来movie->start();//让标签内容自适应大小lab3->setScaledContents(true);//给标签设置静态图this->lab4 = new QLabel(this);lab4->resize(60,60);lab4->move(260,80);lab4->setPixmap(QPixmap(":/icon/tx.jpg"));lab4->setScaledContents(true);connect(btn1, &QPushButton::clicked, this, &Widget::login_clicked);connect(btn2, &QPushButton::clicked, this, &Widget::on_questIconbtn_clicked);}Widget::~Widget()
{
}
/*
void Widget::login_clicked()
{this->close();emit jump();
}
*///按钮1对应的槽函数
void Widget::login_clicked()
{if(edit1->text() == edit2->text()){QMessageBox box(QMessageBox::Information,  //图标,问题图标"登录",   //对话框标题"登录成功",    //对话框文本内容QMessageBox::Ok,  //对话框提供的按钮this);  //父组件box.exec();//2、对用户点击的按钮进行判断this->close();emit jump();}else{//1、实例化一个消息对话框的对象QMessageBox box(QMessageBox::Warning,  //图标,问题图标"警告",   //对话框标题"账号和密码不匹配,是否重新登录?",    //对话框文本内容QMessageBox::Ok | QMessageBox::No,  //对话框提供的按钮this);  //父组件//2、调用函数设置相关属性box.setButtonText(QMessageBox::Ok,"Yes");box.setDefaultButton(QMessageBox::No);//3、显示对话框 并返回用户点击的那个按钮值int btn = box.exec();//4、判断用户点击的按钮值if(btn == QMessageBox::Ok){edit2->clear();}else if(btn == QMessageBox::No){this->close();}edit2->clear();}
}//取消按钮对应的槽函数
void Widget::on_questIconbtn_clicked()
{//1、实例化一个消息对话框的对象QMessageBox box(QMessageBox::Question,  //图标,问题图标"问题",   //对话框标题"是否要确定退出登录?",    //对话框文本内容QMessageBox::Ok | QMessageBox::No,  //对话框提供的按钮this);  //父组件//2、调用函数设置相关属性box.setButtonText(QMessageBox::Ok,"yes");box.setDefaultButton(QMessageBox::No);//3、显示对话框 并返回用户点击的那个按钮值int btn = box.exec();//4、判断用户点击的按钮值if(btn == QMessageBox::Ok){this->close();}else if(btn == QMessageBox::No){qDebug() << "继续登录";}
}

运行效果:

点击取消按钮效果

点击No效果

输入账号密码不一致

点击Yes按钮

输入账号密码一致

点击OK按钮

知识梳理

对话框资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1557923.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

信息安全——应急响应

应急响应部分 1、提交攻击者的IP地址 简单过一遍apache日志&#xff0c;less /var/log/apache2/access.log.1 很明显的可以发现大量的扫描流量&#xff0c;如下&#xff1a; 大量的并发连接&#xff0c;且访问资源均返回404&#xff0c;且UA不正常&#xff0c;从这里可以得…

【重学 MySQL】六十二、非空约束的使用

【重学 MySQL】六十二、非空约束的使用 定义目的关键字特点作用创建非空约束删除非空约束注意事项 在MySQL中&#xff0c;非空约束&#xff08;NOT NULL Constraint&#xff09;是一种用于确保表中某列不允许为空值的数据库约束。 定义 非空约束&#xff08;NOT NULL Constra…

Prometheus + Grafana 监控 MySQL 数据库

文章目录 1、前置介绍2、搭建流程2.1、安装 Docker2.2、安装 MySQL2.3、安装 MySQL Exporter2.4、安装 Prometheus2.5、安装 Grafana 1、前置介绍 本次监控平台搭建&#xff0c;我使用2台阿里云服务器来完成本次的搭建部署操作&#xff0c;配置如下&#xff1a; 阿里云ECS1&am…

《CTF 特训营》:网络安全竞赛的进阶指南

在网络安全领域日益受到重视的今天&#xff0c;CTF&#xff08;Capture The Flag&#xff09;竞赛作为一种检验和提升网络安全技能的方式&#xff0c;受到了越来越多爱好者的关注。而《CTF 特训营》这本书&#xff0c;无疑是一本帮助读者深入了解 CTF 竞赛的优秀读物。 一、书籍…

基于LORA的一主多从监测系统_AHT20温湿度传感器

1&#xff09;AHT20温湿度传感器 这个传感器&#xff0c;网上能找到的资料还是比较多的&#xff0c;我们使用的是HAL硬件i2c&#xff0c;相比于模拟i2c&#xff0c;我们不需要过于关注时序问题&#xff0c;我们只需要关心如何获取数据以及数据如何处理&#xff0c;下面以数据手…

探索Ultralytics YOLO11在视觉任务上的应用

前言 在人工智能持续发展的当下&#xff0c;有一点是确凿无疑的&#xff1a;模型正变得愈发优秀、快捷和智能。就在人们以为YOLO系列已登峰造极之时&#xff0c;Ultralytics推出了最新升级版——YOLO11。需要注意的是&#xff0c;这里不是YOLOv11&#xff0c;他们简化了命名方…

如何绘制短剧产业链图谱?短剧产业前景如何?

绘制短剧产业链图谱是一个涉及多个环节的复杂过程。我们首先需要确定产业链的主要环节&#xff0c;包括内容创作、制作、发行、宣传和观众。每个环节都由不同的参与者组成&#xff0c;如编剧、导演、演员、制作公司、版权销售商、在线平台、电视台、广告公司和消费者等&#xf…

51.哀家要长脑子了!

1.P1003 [NOIP2011 提高组] 铺地毯​​​​​​ 重复 模拟 要求覆盖在最上面的地毯编号&#xff0c;用四个数组abgk分别记录地毯起点的左下角横纵坐标&#xff0c;地毯的长度宽度&#xff0c;输入的坐标x y 当它满足大于等于左下角坐标 并且 小于等于 地毯左下角横纵坐标的时候…

Authentication Lab | IP Based Auth Bypass

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;IP Based Auth Bypass 前情提要 有些开发人员为了图方便&#xff0c;会给站点设置一个 IP 白名单&#xff0c;如果访问站点的用户的 IP 在白名单内&#xff0c;则允许访…

使用sponge+dtm快速搭建一个高性能的电商系统,秒杀抢购和订单架构的设计与实现

本文将展示如何使用 Sponge 框架快速创建一个简易版高性能电商系统&#xff0c;主要实现秒杀抢购和订单功能&#xff0c;并通过分布式事务管理器 DTM 来确保数据一致性。电商系统的架构图如下&#xff1a; 这是源码示例eshop&#xff0c;目录下包括了两个一样的代码示例&#x…

前端反接保护:实用方案解析与探讨

前端反接保护通常采用肖特基二极管方案或PMOS/NMOS方案&#xff0c;本文另外介绍一种理想二极管方案。 1、肖特基二极管方案 由于肖特基二极管具有正向导通电压&#xff0c;只能用于小电流场合&#xff0c;甚至于直接使用普通的整流二极管。比如1A电流&#xff0c;设D1的正向…

【含文档】基于Springboot+Android的环境保护生活App(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

网络编程(15)——服务器如何主动退出

十五、day15 服务器主动退出一直是服务器设计必须考虑的一个方向&#xff0c;旨在能通过捕获信号使服务器安全退出。我们可以通过asio提供的信号机制绑定回调函数即可实现优雅退出。 之前服务器的主函数如下 #include "CSession.h" #include "CServer.h"…

电影《749局》路演 苗苗演绎超能力少女分享幕后故事

近日&#xff0c;国庆档科幻电影《749局》正在热映中&#xff0c;各主创们以及导演正在积极路演中&#xff0c;截至目前&#xff0c;主演苗苗已到过宁波、杭州、武汉、长沙等城市&#xff0c;在现场与观众热情互动&#xff0c;讲述电影拍摄背后的故事与感受。根据猫眼专业版数据…

Word转PDF的转换方法有哪些?这7个效率技巧,不知道就亏大了!

Word转PDF怎么转&#xff1f;我们在日常工作生活中&#xff0c;经常会用到word文档。如果是编写报告、做会议记录、制定文案等内容&#xff0c;一般都会选择创建word文档。但是如果需要发送给同事、客户或合作伙伴协作时&#xff0c;pdf格式会更加方便。 那么如何将word转为pdf…

Chapter06

6.3.1 &#xff08;1&#xff09;打印如下图案 #include <stdio.h> int main() {int i, j;int n 5; // 定义图案的行数 for (i 1; i < n; i) {// 打印前导空格 for (j 1; j < n - i; j) {printf(" ");}// 打印数字 for (j 1; j < i; j) {p…

永磁同步电机环路反步法(backstepping)控制

文章目录 1、反步控制原理1.1 李雅普诺夫稳定性定理1.2 严格反馈系统1.3 一般设计流程 2、永磁同步电机反步控制2.1 反步控制器设计2.2 反步控制仿真 参考 写在前面&#xff1a;本人能力、时间、技术有限&#xff0c;没有对一些细节进行深入研究和分析&#xff0c;也难免有不足…

【Canvas与艺术】古典绿墙象牙白框红棱六边形窗格

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>古典六边形窗格Draft1</title><style type"text/css&q…

YOLOv10改进策略【注意力机制篇】| CVPR2024 CAA上下文锚点注意力机制

一、本文介绍 本文记录的是基于CAA注意力模块的YOLOv10目标检测改进方法研究。在远程遥感图像或其他大尺度变化的图像中目标检测任务中&#xff0c;为准确提取其长距离上下文信息&#xff0c;需要解决大目标尺度变化和多样上下文信息时的不足的问题。CAA能够有效捕捉长距离依赖…

嵌入式 c 内存堆栈增长方向往低地址方向好处

如下是堆和栈内存空间使用方式有如下好处&#xff1a; 1、stack从高地址向低地址扩展&#xff0c;这样栈空间的起始位置就能确定下来&#xff1b;如果反向&#xff0c;则要考虑这个起点从哪里合适&#xff0c;要确定堆的大小。 2、可以共用中间部分区域空间&#xff0c;最大化…