华清远见作业第四十一天——Qt(第三天)

思维导图:

编程

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

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

要求:基于属性版和基于静态成员函数版至少各用一个

代码:

success.h

#ifndef SUCCESS_H
#define SUCCESS_H#include <QWidget>namespace Ui {
class success;
}class success : public QWidget
{Q_OBJECTpublic:explicit success(QWidget *parent = nullptr);~success();
public slots:void my_jump_slot();//第二个界面的槽函数声明
private:Ui::success *ui;
};#endif // SUCCESS_H

widge.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void my_jump(); //第一个界面信号的声明
public slots:   //槽函数权限 ,该权限下函数都是槽函数void my_slot(); //需要声明也要实现void my_slot1();
private slots:void on_But2_clicked();//第一个登录成功的//void on_But2_clicked2();//第一个登录失败的void on_But1_clicked();private:Ui::Widget *ui;};
#endif // WIDGET_H

main.cpp

#include "widget.h"
#include "success.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();success s;//手动连接QObject::connect(&w,&Widget::my_jump,&s,&success::my_jump_slot);return a.exec();
}

success.cpp

#include "success.h"
#include "ui_success.h"success::success(QWidget *parent) :QWidget(parent),ui(new Ui::success)
{ui->setupUi(this);
}success::~success()
{delete ui;
}
//第二个界面槽函数的实现
void success::my_jump_slot()
{this->show();//显示界面
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<QMessageBox>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置密码显示ui->Edit2->setEchoMode(QLineEdit::Password);//设置占位ui->Edit1->setPlaceholderText("账号");ui->Edit2->setPlaceholderText("密码");//标签ui->lab1->setPixmap(QPixmap(":/pictrue/login.png"));ui->lab1->setScaledContents(true);ui->lab2->setPixmap(QPixmap(":/pictrue/passwd.jpg"));ui->lab2->setScaledContents(true);//手动连接槽函数qt5退出connect(ui->But1, &QPushButton::clicked, this, &Widget::on_But1_clicked);//使用手动连接qt5//connect(ui->But2,&QPushButton::clicked,this,&Widget::my_slot1);connect(ui->But2,&QPushButton::clicked,this,&Widget::on_But2_clicked);
}Widget::~Widget()
{delete ui;
}void Widget::my_slot()
{close();
}
void Widget::my_slot1()
{if(ui->Edit1->text()=="admin"){if(ui->Edit2->text()=="123456"){Widget::on_But2_clicked();}else{qDebug("%s","密码错误");qDebug("%s","登录失败");//  Widget::on_But2_clicked2();//登录失败的槽函数}}else{qDebug("%s","账号错误");qDebug("%s","登录失败");ui->Edit1->clear();ui->Edit2->clear();//清空}}void Widget::on_But2_clicked()
{if(ui->Edit1->text()=="admin" && ui->Edit2->text()=="123456"){//弹出信息对话框QMessageBox msg(QMessageBox::Information,   //对话图标"信息",   //对话框标题"登录成功",//提示文本QMessageBox::Ok,    //提供按钮this    //指定父组件);//调用exec()弹出对话框int ret=msg.exec();//根据用户的选择 执行不同的功能if(ret==QMessageBox::Ok){this->close();//关闭登录页面emit my_jump(); //触发第一个界面的信号}}else if(ui->Edit1->text()=="admin" && ui->Edit2->text()!="123456"){//调用QMessageBox的静态成员函数 弹出对话框int ret=QMessageBox::critical(this, //指定父组件"错误对话框","账号密码不匹配,是否重新登录?",QMessageBox::Yes|QMessageBox::No);if(ret==QMessageBox::Yes){ui->Edit2->clear();//清空密码}else{this->close();}}
}//void Widget::on_But2_clicked2()//登录失败的槽函数
//{//}void Widget::on_But1_clicked()
{QMessageBox MSG(QMessageBox::Question,"问题对话框","您是否确定退出登录",QMessageBox::Yes|QMessageBox::No,this);//调用exec()弹出对话框int ret=MSG.exec();if(ret==QMessageBox::Yes){this->close();}else if(QMessageBox::No) {this->show();}
}

运行效果:

登录成功

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用iSCSI服务部署IP SAN网络存储服务

一、配置环境&#xff08;Vmware WorkStation虚拟环境&#xff09; 服务端与客户端OS&#xff1a;openEuler 22.03-LTS CPU&#xff1a;1U1C 内存&#xff1a;2G 硬盘&#xff1a;5个SCSI磁盘&#xff0c;其中一个作为系统盘&#xff0c;另外四个配置为RAID5阵列 服务器IP…

【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…

React 模态框的设计(三)拖动组件的完善

我在上次的Draggable组件的设计中给了一个简化的方法&#xff0c;今天我来完善一下这个组件&#xff0c;可用于任何可移动组件的包裹。完善后的效果如下所示&#xff1a; 这个优化中&#xff0c;增加了一个注目的效果&#xff0c;还增加了触发可拖动区域的指定功能&#xff0c;…

pikachu靶场-RCE

介绍&#xff1a; RCE(remote command/code execute)概述 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命…

2024“薪”风口、学习鸿蒙开发就业钱景如何?

随着华为的鸿蒙系统从诞生之初就备受关注&#xff0c;对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 那么&#xff0c;2024年学鸿蒙开发的就业前景如何呢&#xff1f; 一、彻底摆脱“安卓套壳”&#xff01; HarmonyO…

我用Python写了一个倒计时软件

人过中年&#xff0c;每天都觉得时间过得很快&#xff0c;忙活了一天却发现自己很多时候是瞎忙&#xff0c;似乎没有什么成效&#xff0c;匆忙中一天就过去了。 后来&#xff0c;我想想可能是我没有时间的紧迫感&#xff0c;或者说没有明确的目标和执行力&#xff0c;所以才会…

LeetCode94.二叉树的中序遍历

题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 &#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 思路 中序遍历的顺序是左子树 -> 根节点 -> 右子树。因此&#xff0c;我们可以通过递归的方式遍历二叉树&…

人工智能在测绘行业的应用与挑战

目录 一、背景 二、AI在测绘行业的应用方向 1. 自动化特征提取 2. 数据处理与分析 3. 无人机测绘 4. 智能导航与路径规划 5. 三维建模与可视化 6. 地理信息系统&#xff08;GIS&#xff09;智能化 三、发展前景 1. 技术融合 2. 精准测绘 3. 智慧城市建设 4. 可…

window: C++ 获取自己写的dll的地址

我自己用C写了一个插件,插件是dll形式的,我的插件式在dll的目录下有个config文件夹,里面是我用json写的插件配置文件,当插件运行的时候我需要读取到json配置文件,所有最重要的就是如何获取dll的路径. 大概就是这么个结构, 我自己封装了一个函数.只适用于window编程,因为里面用…

TCP/IP协议详解

文章目录 TCP/IP协议概述基于TCP/IP协议的应用工具协议协议的必要性 TCP/IP协议TCP/IP协议族协议的分层 传输方式的分类报文、帧、数据包等的区别TCP 和 UDP的区别 TCP/IP协议概述 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;是一组通信协…

Chrome插件精选 — 缓存清理

Chrome实现同一功能的插件往往有多款产品&#xff0c;逐一去安装试用耗时又费力&#xff0c;在此为某一类型插件挑选出比较好用的一款或几款&#xff0c;尽量满足界面精致、功能齐全、设置选项丰富的使用要求&#xff0c;便于节省一个个去尝试的时间和精力。 1. Chrome清理大师…

maven 打包命令

Maven是基于项目对象模型(POM project object model)&#xff0c;可以通过一小段描述信息&#xff08;配置&#xff09;来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 Maven的核心功能便是合理叙述项目间的依赖关系&#xff0c;通俗点讲&#xff0c;就是通过po…

【程序员必备技能】Git入门

目录 &#x1f308;前言&#x1f308; &#x1f4c1; Git的概念 &#x1f4c2; 版本控制 &#x1f4c2; 集中式 和 分布式 ​ &#x1f4c1; 创建和配置本地仓库 &#x1f4c1; 理解工作区&#xff0c;暂存区&#xff0c;版本库 &#x1f4c1; Git的基本操作 &#x1f4c2;…

论文阅读:How Do Neural Networks See Depth in Single Images?

是由Technische Universiteit Delft(代尔夫特理工大学)发表于ICCV,2019。这篇文章的研究内容很有趣,没有关注如何提升深度网络的性能&#xff0c;而是关注单目深度估计的工作机理。 What they find&#xff1f; 所有的网络都忽略了物体的实际大小&#xff0c;而关注他们的垂直…

Seata分布式事务实战AT模式

目录 分布式事务简介 典型的分布式事务应用场景 两阶段提交协议(2PC) 2PC存在的问题 什么是Seata&#xff1f; Seata的三大角色 Seata AT模式的设计思路 一阶段 二阶段 Seata快速开始 Seata Server&#xff08;TC&#xff09;环境搭建 db存储模式Nacos(注册&配…

【C++】多态概念(入门)

介绍&#xff1a; 多态的概念&#xff1a;通俗来说&#xff0c;多态就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。比如扫红包操作&#xff0c;同样是扫码动作&#xff0c;不同的用户扫 得到的不一样的红包&#xff0…

限流算法

下面对常见的限流算法进行讨论。目前&#xff0c;常用的限流算法主要有三种&#xff1a;计数器法、滑动窗口算法、漏桶算法和令牌桶算法。下面分别介绍其原理。 1. 计数器法 计数器法是通过计数对到来的请求进行选择性处理。如系统限制一秒内最多有X个请求&#xff0c;则在该…

042 继承

代码实现 首先定义Person类&#xff08;人类&#xff09; /*** 人的基础特征** author Admin*/ public class Person {/*** 姓名*/String name;/*** 生日*/Date birthday;/*** 手机号码*/String tel;/*** 身份证号码*/String idCode;public Person() {}public Person(String …

关于添加第三方jar包到SpringBoot工程中的一些问题

1&#xff1a;如果是多级module工程的情况下&#xff0c;将jar包添加到当前module中&#xff1b; 2&#xff1a;在当前需要依赖的maven工程中添加 外部jar包路径进行引入 <dependency><groupId>kuaishou</groupId><artifactId>kuaishou-merchant-ope…

自定义悬浮气泡组件

一.常用悬浮气泡展示 在一个项目中&#xff0c;常常会使用点悬浮展示&#xff0c;而市面上悬浮tooltip的组件非常多 例如常用的antd提供的Tooltip 用法如下&#xff08;来自于官方文档示例&#xff09;&#xff1a; import React from react; import { Button, Tooltip, Con…