Day3 Qt

作业

1.

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

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

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

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

要求:尽量每行代码都有注释

//my_widget.cpp#include "my_widget.h"
#include "ui_my_widget.h"My_Widget::My_Widget(QWidget *parent): QWidget(parent), ui(new Ui::My_Widget)
{ui->setupUi(this);//窗口的相关设置//    this -> resize(800,500);this -> setWindowTitle("QQ聊天"); //设置窗口标题this -> setWindowIcon(QIcon(":/pictrue/pictrue/qq.png"));//设置窗口图标//标签相关设置ui-> logoLab ->setPixmap(QPixmap(":/pictrue/pictrue/logo.png"));//设置登录界面主图ui -> logoLab -> setScaledContents(true);//主图自适应标签大小//账号和密码ui -> userNameLab -> resize(40,40);//设置账户标签图标大小ui -> userNameLab -> setPixmap(QPixmap(":/pictrue/pictrue/wodepeizhenshi.png"));//设置账户标签图标ui -> userNameLab -> setScaledContents(true);//设置账户标签图标自适应标签大小ui -> passwdLab -> resize(40,40);//设置密码标签大小ui -> passwdLab ->setPixmap(QPixmap(":/pictrue/pictrue/passwd.jpg"));//设置密码标签图标ui -> passwdLab ->setScaledContents(true);//设置密码标签图标自适应标签大小//账号密码输入ui -> usrEdit ->setPlaceholderText("QQ账号/手机号码/QQ邮箱");//在账户输入行编译器上设置隐性输入提示ui -> passwdEdit -> setPlaceholderText("请输入密码");//在密码输入行编译器上设置隐性输入提示ui -> passwdEdit -> setEchoMode(QLineEdit::Password);//将密码行编译器设置为不可见属性防止密码泄露//登录按钮ui -> btn1 ->setIcon(QIcon(":/pictrue/pictrue/login.png"));//登录按钮设置添加图片ui -> btn2 ->setIcon(QIcon(":/pictrue/pictrue/cancel.png"));//取消登录按钮设置添加图片connect(ui ->btn1,&QPushButton::clicked,this,&My_Widget::btn1_slot);//信号触发函数,按下登录按钮,当登录成功则响应相应槽函数,判断账号是否输入正确//   connect(ui->btn2,SIGNAL(clicked()),this,SLOT(my_slot()));}My_Widget::~My_Widget()
{delete ui;
}void My_Widget::my_slot() //QT4版本 槽函数
{this ->close();//当前界面关闭
}
void My_Widget:: btn1_slot() //qt5版本信号与槽函数连接,自定义
{QString s = ui ->usrEdit->text();//存入输入的数据QString v = ui ->passwdEdit->text();//存入输入的数据//判断账号密码输入正确if(s=="admin"&&v=="123456"){qDebug() << "登录成功";//终端输出登录成功//跳转另一个窗口int res=QMessageBox::information(this,"登录成功",                  //调用静态消息对话框"密码正确,请进入聊天界面",      //参数内容书写QMessageBox::Ok);            //参数判断是否ok 返回okif(res==QMessageBox::Ok) //判断选择按下按钮ok{emit Jump(); //则进行跳转界面,先发送跳转信号,通过跳转信号链接第二窗口的show函数}this->close();//跳转是将当前登录界面关闭}else{//============基于属性版本==============
//        QMessageBox msg(                                //调用属性消息对话框
//                    QMessageBox::Critical,                //输出提示错误信息
//                    "错误",
//                    "账号和密码不匹配,是否重新登录",
//                    QMessageBox::Yes | QMessageBox::No);  //判断按下确认还是否定
//        int ret=msg.exec();  属性消息设置成功编译执行弹出后返回一个确认键值
//        if(ret==QMessageBox::Yes) //判断是否按下确认键
//        {
//            ui ->usrEdit->clear();  //按下yes则清空账户行编译器内容重新输入账号
//            ui->passwdEdit -> clear();//按下yes则清空密码行编译器内容重新输入密码
//            qDebug()<<"请重新登录"; //终端输出重新登入
//        }
//        else  //若按下No键,则进行退出登录
//        {
//           this->close();//退出当前登录界面
//        }
//    }//============基于属性版本==============//============基于静态成员函数版本==============int res=QMessageBox::critical(this,"输入错误",                          //调用静态成员函数错误输出信息框"账号和密码不匹配,是否重新登录",          // 函数内部具体实参QMessageBox::Yes | QMessageBox::No);     //写入消息框按键有哪几个if(res==QMessageBox::Yes)  //如果返回值按下的是YES{ui ->usrEdit->clear();  //清空账号信息ui->passwdEdit -> clear(); //清空密码信息}else{this->close(); //否则按下NO,关闭当前登录界面}//============基于静态成员函数版本==============
}}
void My_Widget::on_btn2_clicked()  //取消键被按下,执行弹出消息框
{//============基于属性版本==============
//    QMessageBox msg1(
//                QMessageBox::Information,
//                "取消登录",
//                "请问您是否需要取消登录",
//                QMessageBox::Yes | QMessageBox::No);
//    int ret=msg1.exec();
//    if(ret==QMessageBox::Yes)
//    {
//        this->close();
//    }
//    else
//    {
//        ui ->usrEdit->clear();
//        ui->passwdEdit -> clear();
//        qDebug()<<"请重新登录";
//    }//============基于属性版本==============//============基于静态成员函数版本==============int res=QMessageBox::information(this,"取消登录","请问您是否需要取消登录",QMessageBox::Yes | QMessageBox::No);if(res==QMessageBox::Yes)  //若按下YES,则取消登录关闭登录页{this->close();}else //按下NO,则不取消登录{ui ->usrEdit->clear();ui->passwdEdit -> clear(); //清空输入端,终端输入提示信息请重新登录qDebug()<<"请重新登录";}//============基于静态成员函数版本==============}
//my_widget.h#ifndef MY_WIDGET_H
#define MY_WIDGET_H
#include <QMessageBox>
#include <QWidget>
#include <QIcon>
#include <QPixmap>
#include<QLineEdit>
#include <QPushButton>
#include<QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class My_Widget; }
QT_END_NAMESPACEclass My_Widget : public QWidget
{Q_OBJECTpublic:My_Widget(QWidget *parent = nullptr);~My_Widget();public slots:void btn1_slot();
void my_slot();signals:void Jump();private slots:
void on_btn2_clicked();private:Ui::My_Widget *ui;
};
#endif // MY_WIDGET_H
//main.cpp
#include "my_widget.h"
#include "second.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);My_Widget w;w.show();Second s;QObject ::connect(&w,&My_Widget::Jump,&s,&Second::Jump_slot);//调用caonnect函数,第一个登录窗口成功后进入新的对话框return a.exec();
}

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

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

相关文章

在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统&#xff0c;刚好手里有块Lichee RV Dock 的板子&#xff0c;所以在学了基础的"hello, world"程序后&#xff0c;想着能不能把这个程序烧录到板子上&#xff0c;简单的做个实验。 要完成这个任务&#xff0c;需要将程序烧录到sd卡上…

React环境初始化

环境初始化 学习目标&#xff1a; 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档&#xff1a;(https://create-react-app.bootcss.com/)    - 打开命令行窗口    - 执行命令      npx create-react-app projectName    说明&#xff1a…

面试题:说一下Redis中有哪些阻塞点以及如何解决?

文章目录 前言有哪些影响redis性能的因素客户端的阻塞磁盘带来的阻塞主从节点带来的阻塞切片集群的阻塞异步机制解决阻塞异步是如何进行的异步删除lazy-free小结 Redis 中的优秀设计有很多&#xff0c;今天我们一起来聊聊群友刷题遇到的&#xff1a;“Redis的异步机制 —— red…

SpringCloud之OpenFeign调用解读

目录 基本介绍 引进 OpenFeign概述 OpenFeign作用 FeignClient EnableFeignClients Java代码实战 实战架构 父工程pom文件 teacher-service服务 student-service服务 测试 自定义配置 基本介绍 引进 如果我们利用RestTemplate发起远程调用的代码时会存在一些…

如何正确维护实验室超声波清洗机

实验室一直被视作一个严谨且严肃的场所&#xff0c;在其中所做的试验都需要遵照一定流程&#xff0c;所用的设备也经过了细致化挑选&#xff0c;例如实验室超声波清洗机&#xff0c;其性能远强于普通类别的清洗机。专门负责采购的实验室人员&#xff0c;通常会对质量优服务好的…

C# Onnx Yolov8 Detect 戴安全帽检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

外贸找客户软件:BotMaster 2023 Crack

具有多设备支持的全新 WhatsApp™ Business 批量发送器 最新9.0.2.1 稳定且工作。 测试日期&#xff1a;2023 年 10 月 9 日 所有功能工作正常。 图像发送问题固定 数字过滤器和组抓取器已修复。 目前稳定 现在使用 BotMaster 9.0.2.1 从 WhatsApp™ 发送交互式按钮 您现在可以…

uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案

根据公司要求&#xff0c;让我写一个h5&#xff0c;后续会嵌入到合作公司的微信小程序的webview中&#xff0c;如果是自己公司微信小程序&#xff0c;可以采取先下载下来pdf&#xff0c;然后通过wx.openDocument&#xff0c;进行单纯的预览操作&#xff0c;这个可以根据这个老哥…

轻松合并Excel工作表:Java批量操作优化技巧

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 在Excel中设计表单时&#xff0c;我们经常需要对收集的信息进行统计分析。例如&a…

C++前缀和算法:生成数组原理、源码及测试用例

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划&#xff0c;日后完成。 题目 给定三个整数 n、m 和 k 。考虑使用下图描述的算法找出正整数数组中最大的元素。 请你构建一个具有以下属性的数组 arr &#…

Photon——Fusion服务器(Failed to find entry-points:System.Exception: )

文章目录 前言解决方案:1.报警信息如下2.选择3d urp3.引入Fusion之后选择包管理,点击Burst中的Advanced Project Settings4.勾选两个预设选项5.引入官网unity.burst6.更新后报警消失总结前言 制作局域网游戏,出现未找到进入点报警 Failed to find entry-points 解决方案: …

计算机中整数的补码表示及二进制数轮

为了同学们能理好的理解数在计算机内的表示&#xff0c;我们可以把计算机中的整数看成N位进制数的数轮&#xff0c;N一般为2的幂&#xff0c;如下&#xff1a; 我们来举个例子&#xff1a;如果用4位二进制来表示整数&#xff0c;则可以表示的整数范围为-8&#xff08;即&#x…