QT day3作业

1.思维导图

 

2、

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
要求:基于属性版和基于静态成员函数版至少各用一个

头文件:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMovie>//动图类
#include <QPushButton>//按钮类
#include <QtTextToSpeech>//文本转语音类
#include <QMessageBox>//对话框类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECT//宏,信号与槽public:Widget(QWidget *parent = nullptr);~Widget();
signals:void my_jump();//第一个界面的信号private:Ui::Widget *ui;QTextToSpeech *speecher;//定义一个语音播报着public slots: //表示该权限下是私有槽函数(一般由系统提供)void my_slot();void my_slot1();};
#endif // WIDGET_H

 sec.h

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

 

主函数:

main.cpp 

#include "widget.h"
#include "sec.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;//实例化第一个窗口w.show();sec s; //实例化第二个窗口//将第一个窗口和第二个窗口连接QObject::connect(&w,&Widget::my_jump,&s,&sec::my_jump_slot);return a.exec();
}

功能函数:

 widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);speecher =new QTextToSpeech(this);//给语音播报者实例化空间//***********************窗口类*******************************//this->setWindowFlags(Qt::FramelessWindowHint);//***********************标签类*******************************//QMovie *mv=new QMovie(":/new/prefix1/22/1.gif");//设置动图ui->logoLab->setMovie(mv);//将动图放到logo标签上mv->start();//让动图开始ui->logoLab->setScaledContents(true);//设置动图自适应//设置头像样式ui->labh->setStyleSheet("border-radius:30px");//手动连接信号和系统的槽函数  基于qt4版的连接  该连接是不友好的连接connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(my_slot()));//手动连接信号和自定义槽函数  基于qt5版的连接  该连接是友好的连接connect(ui->loginButton,&QPushButton::clicked,this,&Widget::my_slot1);
}Widget::~Widget()
{delete ui;
}void Widget::my_slot() //取消按钮自定义的函数处理
{        //基于静态成员函数版本实现int ret=QMessageBox::question(this,//父组件"问题",//标题"您是否确定要退出登录?",//文本QMessageBox::Yes|QMessageBox::No);//提供的按钮if(ret==QMessageBox::Yes)//对用户选中的按钮,执行不同的功能{this->close();//关闭当前的界面}}void Widget::my_slot1()//登录按钮自定义的函数处理
{if(ui->lineEdit->text()=="admin" && ui->lineEdit_2->text()=="123456")//判断登录的账号和密码是否正确{ui->msgLab->setText("登陆成功!");//修改状态信息标签speecher->say("登录成功");//语音播报QMessageBox box(QMessageBox::Information, //基于属性版本"提示",                  //标题"登陆成功",                //文本QMessageBox::Ok,          //提供按钮this);                         //父对象int  ret=box.exec();          //使用exec()弹出对话框if(ret==QMessageBox::Ok)  //根据用户选中的按钮 执行不同的功能{emit this->my_jump();//触发一个界面的信号this->close(); //关闭当前的界面}}else{speecher->say("登录失败");//语音播报int res=QMessageBox::critical(this,     //父组件 //基于静态成员函数版本实现"错误",  //标题"账号和密码不匹配,是否重新登录?",//文本QMessageBox::Yes|QMessageBox::No);//提供的按钮ui->msgLab->setText("登陆失败!");//修改状态信息标签if(res==QMessageBox::Yes)   //对用户选中的按钮,执行不同的功能{ui->lineEdit_2->setText("");//将密码行编辑器内容清空}else{this->close();//关闭当前的界面}}}

 sec.cpp

#include "sec.h"
#include "ui_sec.h"sec::sec(QWidget *parent) :QWidget(parent),ui(new Ui::sec)
{ui->setupUi(this);}sec::~sec()
{delete ui;
}
//槽函数的实现
void sec::my_jump_slot()
{this->show();
}

 实际效果:

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

 

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

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

代码主要功能截图:

 

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

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

相关文章

k8s-集群升级 2

在每个集群节点都安装部署cir-docker 配置cri-docker 升级master节点 导入镜像到本地并将其上传到仓库 修改节点套接字 升级kubelet 注&#xff1a;先腾空后进行升级&#xff0c;顺序不能搞反&#xff0c;否则会导致严重问题 配置kubelet使用cri-docker 解除节点保护 升级wor…

Module build failed (from ./node_modules/postcss-loader/src/index.js):

出现该错误是你可能没认真看官网的安装配置&#xff0c;可直接看该目录3&#xff0c;一个字一个字看 先安装uview 如果选择v1版本&#xff0c;建议使用npm下载&#xff0c;下面以v1版本为例&#xff0c;使用的是npm下载&#xff0c;导入uview时该文件也在node_modules文件夹里…

92 [递归实现指数型枚举](https://www.acwing.com/problem/content/94/)

从 1∼n1∼&#xfffd; 这 n&#xfffd; 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案。 输入格式 输入一个整数 n&#xfffd;。 输出格式 每行输出一种方案。 同一行内的数必须升序排列&#xff0c;相邻两个数用恰好 11 个空格隔开。 对于没有选任何…

Linux控制---进程程序替换

前言&#xff1a;前面我们学洗了Linux进程退出的相关知识&#xff0c;了解了什么是进程退出&#xff0c;已经进程等待的相关话题&#xff0c;今天&#xff0c;我们来学习Linux中的进程程序替换&#xff0c;进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…

【JUC】七、读写锁

文章目录 1、读写锁2、读写锁的体验3、读写锁的特点4、锁的演变5、读写锁的降级6、复习&#xff1a;悲观锁和乐观锁 1、读写锁 JUC下的锁包的ReadWriteLock接口&#xff0c;以及其实现类ReentrantReadWriteLock ReadWriteLock 维护了一对相关的锁&#xff0c;即读锁和写锁&…

网站分类seo怎么优化(如何调整有利于SEO排名)

网站分类seo怎么优化&#xff08;如何调整有利于SEO排名&#xff09; 这期分享一篇关于网站seo优化中关于网页分类排名优化的文章&#xff0c;看看原文来自 蝙蝠侠IT &#xff0c;原文标题网站分类&#xff0c;没有SEO标题&#xff0c;怎么办的文章介绍。 理想与现实总是充满矛…

计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法

7.计算属性 7-1计算属性-有缓存 模板中的表达式虽然很方便,但是只能做简单的逻辑操作,如果在模版中写太多的js逻辑,会使得模板过于臃肿,不利于维护,因此我们推荐使用计算属性来解决复杂的逻辑 <!DOCTYPE html> <html lang"en"> <head><meta …

msvcp140.dll文件的丢失原因以及五个解决办法

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将介绍五个处理办法&#xff0…

正点原子阿尔法Linux开发板——MfgTool烧写工具烧写系统

WINDOWS系统下 前提准备 OTG、TTL的USB接口分别连接电脑 USB_OTG 用于烧写&#xff0c;USB_TTL 用于串口查看烧录进度 拨码拨至USB烧录——0100 0000 烧写 SECURE 软件连接串口CH340的COM&#xff08;软件安装激活&#xff09; 我的开发板是I.MX6ULL(EMMC)——双击"Li…

mysql操作 sql语句中的完整性约束有哪些,主键约束、外键约束、引用完整性约束,主键外键、唯一性

什么是约束&#xff1a;约束&#xff1a;就是约定哪些东西能填、怎么填&#xff1f;哪些东西不能填&#xff1f; 文章目录 前言&#xff1a;建表正文一、实体完整性约束1. 主键约束2. 唯一性约束3. 自增长约束4. 联合主键约束 二、域完整性约束三、引用完整性约束1. 外键约束 讲…

JVM虚拟机-虚拟机性能监控、故障处理工具

1基础故障处理工具 jps&#xff08;JVM Process Status Tool&#xff09;是&#xff1a;虚拟机进程状况工具 作用&#xff1a;可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;名称以及这些进…

亚里士多德的思想统治西方世界,实体论证明人不是猪

苏格拉底、柏拉图、亚里士多德&#xff0c;并称古希腊三贤。 公元前384年&#xff0c;亚里士多德出生在马其顿的奴隶主家庭&#xff0c;父亲是马其顿国王腓力二世的宫廷御医。 公元前367年&#xff0c;亚里士多德迁居到雅典&#xff0c;进入柏拉图学园&#xff0c;跟随柏拉图…