当前位置: 首页 > news >正文

day49:QT day2,信号与槽、对话框

一、完善登录框

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

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

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

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

第二个界面,second.h:

#ifndef SECOND_H
#define SECOND_H#include <QWidget>namespace Ui {
class Second;
}class Second : public QWidget
{Q_OBJECTpublic:explicit Second(QWidget *parent = nullptr);~Second();public slots:void jump_slot();   //跳转槽,用来接收从widget发送的信号private:Ui::Second *ui;
};#endif // SECOND_H

第二个界面,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_slot()
{//如果接收到信号,弹出消息框this->show();
}

widget.h:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMessageBox>
#include "second.h"class Widget : public QWidget
{Q_OBJECTprivate:QLabel *lab1;   //背景QLabel *lab2;   //用户图标QLabel *lab3;   //密码图标QLineEdit *edit1;   //用户名/手机/邮箱QLineEdit *edit2;   //密码QPushButton *btn1;  //登录QPushButton *btn2;  //退出QMessageBox errbox; //错误对话框定义Second* s1;     //第二个界面定义
signals:void jump();    //发送信号与第二个界面second槽反应public slots:void login_slot();  //登录按钮点击事件接收槽void cancel_slot();  //取消按钮点击事件接受槽public:Widget(QWidget *parent = nullptr);~Widget();
};
#endif // WIDGET_H

widget.cpp:

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{this->setFixedSize(500,500);this->setWindowTitle("hqyj login...");this->setWindowIcon(QIcon("D:\\qianrushi\\icon\\wodepeizhenshi.png"));//实例化一个标签,给定初始文本内容并指定父组件lab1=new QLabel(this);lab1->resize(500,200);lab1->move(0,0);lab1->setPixmap(QPixmap("D:\\qianrushi\\icon\\logo.png"));lab1->setScaledContents(true);//lab1->setGeometry(0,0,500,200);lab2=new QLabel(this);lab2->resize(30,30);lab2->move(80,250);lab2->setPixmap(QPixmap("D:\\qianrushi\\icon\\userName.jpg"));lab2->setScaledContents(true);edit1=new QLineEdit(this);edit1->setGeometry(lab2->x()+50,lab2->y()-10,300,50);edit1->setPlaceholderText("hqyj账号/手机/邮箱");lab3=new QLabel(this);lab3->setPixmap(QPixmap("D:\\qianrushi\\icon\\passwd.jpg"));lab3->setGeometry(lab2->x(),lab2->y()+50,30,30);lab3->setScaledContents(true);edit2=new QLineEdit(this);edit2->setGeometry(lab3->x()+50,lab3->y()-10,300,50);edit2->setPlaceholderText("密码");edit2->setEchoMode(QLineEdit::Password);btn1=new QPushButton(QIcon("D:\\qianrushi\\icon\\login.png"),"登录",this);btn1->resize(100,40);btn1->move(lab3->x()+100,lab3->y()+80);btn2=new QPushButton(QIcon("D:\\qianrushi\\icon\\cancel.png"),"退出",this);btn2->resize(100,40);btn2->move(btn1->x()+150,btn1->y());//给第二个界面申请空间s1 = new Second;//连接弹窗的信号与槽connect(this,&Widget::jump,s1,&Second::jump_slot);//连接登录的信号与槽connect(btn1,&QPushButton::clicked,this,&Widget::login_slot);//连接取消的信号与槽connect(btn2,&QPushButton::clicked,this,&Widget::cancel_slot);
}Widget::~Widget()
{
}void Widget::login_slot()
{if(edit1->text()!="admin" || edit2->text()!="123456"){//登录失败,弹出错误对话框errbox.setText("账号密码不匹配,是否重新登录");errbox.setWindowTitle("错误对话框");errbox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);errbox.setDefaultButton(QMessageBox::Yes);int ret1=errbox.exec();if(ret1==QMessageBox::Yes){//同意,隐藏错误对话框,清空账号密码errbox.hide();edit1->clear();edit2->clear();}else if(ret1==QMessageBox::Cancel){//取消,关闭错误对话框errbox.close();}}else{int ret2=QMessageBox::information(this,"信息对话框","登录成功",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok);if(ret2 == QMessageBox::Ok){//同意登录,跳转this->close();emit jump();}else if(ret2 == QMessageBox::Cancel){QMessageBox quesbox(QMessageBox::Question,"问题对话框","确定退出?",QMessageBox::Yes|QMessageBox::No,this);//取消,弹出问题对话框int ret3=quesbox.exec();if(ret3 == QMessageBox::Yes){//同意退出,退出程序quesbox.close();this->close();}else if(ret3 == QMessageBox::No){//取消,继续登录quesbox.hide();}}}
}void Widget::cancel_slot()
{//取消,退出程序this->close();
}

main.cpp:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

二、思维导图:有道云笔记

相关文章:

day49:QT day2,信号与槽、对话框

一、完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两个…...

Meta分析核心技术

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…...

Gof23设计模式之责任链模式

1.概述 责任链模式又名职责链模式&#xff0c;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链&#xff1b;当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到有对象处理它为止…...

数字孪生和元宇宙:打造未来的数字边界

数字孪生和元宇宙是近两年来被热议的两个概念&#xff0c;但由于技术的交叉两者也极易被混淆。本文希望带大家深入探讨一下这两者之间的关系&#xff0c;以及它们如何一起构建了数字时代的新格局。 1. 数字孪生的本质 数字孪生是一种虚拟模型&#xff0c;它通过数字手段对现实…...

【新版】系统架构设计师 - 软件架构设计<新版>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 软件架构设计&#xff1c;新版&#xff1e;考点摘要概念架构的 4 1 视图架构描述语言ADL基于架构的软件开发方法ABSDABSD的开发模型ABSDMABSD&#xff08;ABSDM模型&#xff09;的开发过程 软件架…...

Linux面试题

当准备 Linux 面试时&#xff0c;以下是一些可能会遇到的常见 Linux 面试题&#xff1a; 1. 什么是Linux&#xff1f;解释一下Linux操作系统的特点。 2. 什么是Linux内核&#xff1f;Linux内核的作用是什么&#xff1f; 3. 如何在Linux系统上查看当前的IP地址和子网掩码&#…...

NODEJS版本管理工具

一、使用NVM 下载 Linux下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh widows下载地址 https://github.com/coreybutler/nvm-windows/releases 安装Node.js版本&#xff1a; nvm install 14.16.0 切换Node.js版本&#xff1a; nvm use …...

【个人笔记本】本地化部署 类chatgpt模型 详细流程

不推荐小白&#xff0c;环境配置比较复杂 全部流程 下载原始模型&#xff1a;Chinese-LLaMA-Alpaca-2linux部署llamacpp环境使用llamacpp将Chinese-LLaMA-Alpaca-2模型转换为gguf模型windows部署Text generation web UI 环境使用Text generation web UI 加载模型并进行对话 准…...

RFID与人工智能怎么融合,RFID与人工智能融合的应用

随着物联网技术的不断发展&#xff0c;现实世界与数字世界的桥梁已经被打通。物联网通过各种传感器&#xff0c;将现实世界中的光、电、热等信号转化为有价值的数据。这些数据可以通过RFID技术进行自动收集和传输&#xff0c;然后经由人工智能算法进行分析、建模和预测&#xf…...

性能测试 —— Jmeter 常用三种定时器

1、同步定时器 位置&#xff1a;HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时&#xff0c;为了让用户能真正的同时执行&#xff0c;添加同步定时器&#xff0c;用户阻塞线程&#xff0c;知道线程数达到预先配置的数值&#xff0c;才开始执行…...

每个高级前端工程师都应该知道的前端布局

首发于公众号 大迁世界,欢迎关注。📝 每周一篇实用的前端文章 🛠️ 分享值得关注的开发工具 😜 分享个人创业过程中的趣事 快来免费体验ChatGpt plus版本的,我们出的钱 体验地址:https://chat.waixingyun.cn 可以加入网站底部技术群,一起找bug,另外新版作图神器已上线…...

100道基于Android毕业设计的选题题目,持续更新

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好&#xff0c;我是程序员徐师兄、今天给大家谈谈基于android的app开发毕设题目&#xff0c;以及基于an…...

idea显示git分支信息(GitToolBox插件)

效果图 说明 本身idea在右下角会有git分支信息&#xff0c;但是显示的当前打开文件的分支信息&#xff0c;并且不够显眼 解决 1、安装插件(GitToolBox插件) 2、修改idea.properties project.tree.structure.show.urlfalse ide.tree.horizontal.default.autoscrollingfalse将…...

Hadoop知识点之Hadoop发展历程

一、Hadoop名字的起源 Hadoop这个名字不是一个缩写&#xff0c;它是一个虚构的名字。 该项目的创建者&#xff0c;Doug Cutting如此解释Hadoop&#xff1a; 这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短&#xff0c;容易发音和拼写&#xff0c;没有…...

阿里云无影电脑:免费体验无影云电脑3个月

阿里云无影云电脑免费领取流程&#xff0c;免费无影云电脑配置为4核8G&#xff0c;可以免费使用3个月&#xff0c;阿里云百科分享阿里云无影云电脑&#xff08;云桌面&#xff09;免费申请入口、申请流程及免费使用限制条件说明&#xff1a; 目录 阿里云无影云电脑免费申请入…...

菜鸟教程《Python 3 教程》笔记(20):面向对象

菜鸟教程《Python 3 教程》笔记&#xff08;20&#xff09; 20 面向对象20.1 面向对象技术简介20.2 创建类20.2.1 类定义20.2.2 实例化20.2.3 初始化20.2.4 类变量、实例变量20.2.5 类方法、实例方法、静态方法 20.3 访问可见性20.3.1 property装饰器 20.4 动态性20.4.1 __slot…...

vue2编辑markdown

效果 npm i mavon-editor --save 只能全局注册 使用...

PCB走线规则

1、线间距。 这里应该遵循3W规则&#xff0c;所谓3W就是为了减少线间串扰&#xff0c;应保证线间距足够大&#xff0c;当线中心不少于3倍线宽&#xff0c;则可 保持70%的电场不互相干扰。如要达到98%的电场不互相干扰&#xff0c;可使用10W的间距。——这是查阅华为PCB布线规则…...

webpack静态资源上传到CDNS (阿里云 OSS,亚马逊 AWS S3,七牛云 Qiniu Cloud Kodo)webpack-plugin-cdns

webpack-plugin-cdns 是一个 Webpack 插件&#xff0c;用于实现将前端项目中的资源&#xff08;如 JavaScript、CSS、图片等&#xff09;上传到 CDN(OSS、S3、Kodo) 服务器。从而完成资源的 CDN 加速。 在开发前端项目时&#xff0c;我们通常会将静态资源放在本地服务器上&…...

python 异常

1.捕获异常 2.密码爆破 3....

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...