9.18号作业

news2024/12/28 19:55:30

完善登录框

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

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

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

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

second.h

#ifndef SECOND_H
#define SECOND_H

#include <QWidget>
#include <QDebug>
namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT
public:
    void newslot();
public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();

private:
    Ui::Second *ui;
};

#endif // SECOND_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


signals:
    void mysignals();


public slots:
    void userLogin();
    void userExit();


private:
QPushButton *btn1;

QPushButton *btn2;
QLabel *lab1;
QLabel *lab2;
QLabel *lab3;
QLineEdit *edit1;
QLineEdit *edit2;

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
#include "second.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Second s;
    QObject::connect(&w,&Widget::mysignals,&s,&Second::newslot);

    return a.exec();
}

second.cpp

#include "second.h"
#include "ui_second.h"

Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);
}
void Second::newslot()
{
    this->show();            //将自己界面进行展示
}

Second::~Second()
{
    delete ui;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //构造一个登录按钮,并指定父组件,图标,和文本内容
     btn1=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\login.png"),"登录",this);
    //设置固定长度
    this->setFixedSize(400,300);
    //设置窗口标题
    this->setWindowTitle("Widget");
    //设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\wuhuiwu\\Desktop\\wodepeizhenshi.png"));
    //设置窗口尺寸
    btn1->setFixedSize(70,40);
    //移动按钮
    btn1->move(150,250);
    //再构造一个按钮,并给定父组件,图标,文本内容
    btn2=new QPushButton(QIcon("C:\\Users\\wuhuiwu\\Desktop\\cancel.png"),"取消",this);
    //设置按钮尺寸
    btn2->setFixedSize(70,40);
    //移动按钮
    btn2->move(btn1->x()+70,btn1->y());
    //实例化一个标签并指定父组件
    lab1=new QLabel(this);
    //设置尺寸
    lab1->resize(400,150);
    //设置图片
    lab1->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\logo.png"));
     lab1->setScaledContents(true);
    //实例化一个标签并指定父组件
    lab2=new QLabel(this);
    //设置图片
    lab2->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\userName.jpg"));
    //设置尺寸
    lab2->resize(40,30);
    //引动图标
     lab2->move(120,160);
      lab2->setScaledContents(true);
     //实例化一个标签并指定父组件
     lab3=new QLabel(this);
     //设置图片
     lab3->setPixmap(QPixmap("C:\\Users\\wuhuiwu\\Desktop\\passwd.jpg"));
     //设置尺寸
     lab3->resize(40,30);
     //移动图标
      lab3->move(lab2->x(),lab2->y()+50);
       lab3->setScaledContents(true);
      //构建一个文本编辑器
      edit1=new QLineEdit(this);
      //设置尺寸
      edit1->resize(100,30);
      edit1->move(lab2->x()+60,lab2->y());
      //设置占位文本
        edit1->setPlaceholderText("账号名");

      //构建一个文本编辑器
      edit2=new QLineEdit(this);
      //设置尺寸
      edit2->resize(100,30);
      edit2->move(edit1->x(),edit1->y()+50);
      //设置回显模式
       edit2->setEchoMode(QLineEdit::Password);
       edit1->setMaxLength(6);

       //登录
       connect(this->btn1,&QPushButton::clicked,this,&Widget::userLogin);
        //退出
       connect(this->btn2,&QPushButton::clicked,this,&Widget::userExit);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::userLogin()
{
    QString accout=this->edit1->text();
    QString password=this->edit2->text();
    if(accout=="admin"&&password=="123456")
    {
        qDebug()<<"匹配成功";

    QMessageBox box(QMessageBox::NoIcon,"success","登录成功",
                    QMessageBox::Ok);
    int res=box.exec();
    if(res==QMessageBox::Ok)
    {
        this->close();
        emit  mysignals();
    }
    }else
    {
        qDebug()<<"账户密码不匹配,是否重新登录";
        QMessageBox box1(QMessageBox::Critical,"error","账户密码错误",
                         QMessageBox::Ok|QMessageBox::Cancel);
        int res=box1.exec();
        if(res==QMessageBox::Ok)
        {
            this->edit2->clear();
        }
        else if(res==QMessageBox::Cancel)
        {

            this->close();
        }

    }


}
void Widget::userExit()
{
    QMessageBox box2(QMessageBox::Warning,"退出","要退出吗?",
                     QMessageBox::Yes|QMessageBox::No);
    int res=box2.exec();
    if(res==QMessageBox::Yes)

    {
        this->close();
    }
    else if(res==QMessageBox::No)
    {
        this->edit1->clear();
        this->edit2->clear();
    }
}

思维导图

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

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

相关文章

Postman应用——Request数据导入导出

文章目录 导入请求数据导出请求数据导出Collection导出Environments 导出所有请求数据导出请求响应数据 Postman可以导入导出Request和Variable变量配置&#xff0c;可以通过文本方式&#xff08;JOSN文本&#xff09;或链接方式进行导入导出。 导入请求数据 可以通过JSON文件…

一键畅享云端ERP:使用Cpolar内网穿透将用友U8 Cloud部署至外网

文章目录 前言1. 用户需求2. Cpolar内网穿透的安装和注册2.1 Cpolar云端设置2.2 Cpolar Web UI本地设置 3. 公网访问测试 前言 用友U8 Cloud是用友公司推出的一款云端ERP解决方案。它以云计算技术为基础&#xff0c;为企业提供全面的企业资源管理解决方案&#xff0c;涵盖了财…

5.1 内存CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法&#xff0c;校验算法可以通过计算应用与数据的循环冗余校验&#xff08;CRC&#xff09;检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测&#xff0c;…

无涯教程-JavaScript - POWER函数

描述 POWER函数返回加到幂的数字的输出。 语法 POWER (number, power)争论 Argument描述Required/OptionalNumber 基数。 它可以是任何实数。 RequiredPowerThe exponent to which the base number is raised.Required Notes 可以使用" ^"运算符代替POWER来指示…

【深度学习实验】线性模型(四):使用Pytorch实现线性模型:使用随机梯度下降优化器训练模型

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 线性模型linear_model 2. 损失函数loss_function 3. 定义数据 4. 初始化权重和偏置 5. 模型训练 6. 迭代 7. 实验结果 8. 完整代码 一、实验介绍 使用随机梯度下降优化…

【ES6知识】Iterator迭代器与 class类

文章目录 一、Iterator迭代器1.1 基础知识概述1.2 工作原理1.3 Symbol.iterator1.4 Generator函数来实现Symbol.iterator接口 二、ES6 Class 类2.1 概述2.2 ES6中的继承2.3 面向对象应用 - React 一、Iterator迭代器 1.1 基础知识概述 迭代器&#xff08;Iterator&#xff09…

JAVA实现PDF转图片

前言 使用wps自带的转换工具&#xff0c;需要花钱&#xff0c;不花钱的话还带水印。于是&#xff0c;使用java程序将pdf转换为图片。 代码 依赖 <dependencies><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</ar…

几个国内可用的强大的GPT工具

前言&#xff1a; 人工智能发布至今&#xff0c;过去了九个多月&#xff0c;已经成为了我们不管是工作还是生活中一个重要的辅助工具&#xff0c;大大提升了效率&#xff0c;作为一个人工智能的自然语言处理工具&#xff0c;它给各大行业的提供了一个巨大的生产工具&#xff0c…

Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用

文章目录 1、官网简介2、在vue3中使用1)、需要导入vue3支持的版本插件2)、在mian.js里引入&#xff1a;3)、在组件中使用 3、layout布局的计算逻辑4、 gridLayout 的属性 该栅格系统目前对 vue2 的支持是最好的&#xff0c;vue3 是需要用插件支持的&#xff0c;会在小节详细讲解…

目标检测:Edge Based Oriented Object Detection

论文作者&#xff1a;Jianghu Shen,Xiaojun Wu 作者单位&#xff1a;Harbin Institute of Technology Shenzhen 论文链接&#xff1a;http://arxiv.org/abs/2309.08265v1 内容简介&#xff1a; 1&#xff09;方向&#xff1a;遥感领域中的目标检测技术 2&#xff09;应用&…

肖sir__mysql之存储__012

mysql之存储 一、存储 1、什么是存储过程 定义&#xff1a;存储过程就是实现某个特定功能的sql语句的集合&#xff0c;编译后的存储过程会保存在数据库中&#xff0c;通过存储过程的名称可以反复的调用执行。 2、存储过程的优点? (1)存储创建后&#xff0c;可以反复的调用&am…

液晶LCD显示驱动VK2C23可支持最大416点(52SEGx8COM)的LCD屏提供LQFP48、LQFP64的封装

VK2C23是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大224点&#xff08;56SEGx4COM&#xff09;或者最大416点&#xff08;52SEGx8COM&#xff09;的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff0c;也可通过指令进入省电模式。其高抗干扰&#xff…

Zoho Projects登顶福布斯2023年项目管理工具排行榜

Zoho Projects一款集成度较高的项目管理工具&#xff0c;近日入选福布斯2023年十佳项目管理工具榜单。作为一款为中小企业量身定制的解决方案&#xff0c;Zoho Projects以其卓越的功能和性价比&#xff0c;赢得了市场的广泛认可。 在当今竞争激烈的市场环境中&#xff0c;选择一…

F.cross_entropy的使用困惑--终结

1.由于按照cross_entropy的计算公式&#xff0c;F.cross_entropy(outs,label)这里面的outs和label的应该都是batch_size * one_hot_vec的形状&#xff0c;但是&#xff0c;这个函数呢&#xff0c;第二个label只要是batch_size * scalar即可&#xff0c;那个scalar就是index的位…

如果你用Markdown写公众号文章,试试我做的在线转换神器

大家好&#xff0c;我希望向大家介绍一款我最近开发的实用工具——"MarkdownConvert"&#xff0c;它能够以极简和高效的方式将Markdown文本转换为微信公众号所支持的HTML格式。它是我基于一个开源项目改进优化了页面&#xff0c;增加了自己喜欢的文章主题。 先聊聊这…

微信小程序传参的五种方式

文章目录 前言一、URL参数传递1.api跳转2.组件跳转 二、Storage本地存储三、全局变量globalData四、页面跳转时传参五、页面栈传参总结结语 前言 大家好&#xff0c;今天和大家分享一下微信小程序页面之间传参的五种方式&#xff0c;这个的话也是有人问了我一嘴&#xff0c;然…

Python进阶复习-文件与异常

目录 文件打开文件路径打开模式字符编码 文件读取逐行读取读取所有行 文件写入既读又写两种数据存储结构csv文件json文件 程序异常Exception万能捕捉 文件打开 文件路径 完整路径 with open("E:\hello.txt", "r", encoding"UTF-8") as file:c…

Socks5与HTTP的区别与应用场景

在网络访问中&#xff0c;代理服务器扮演着重要角色&#xff0c;用于保护用户隐私、提高访问速度等。Socks5代理和HTTP代理是两种常见的代理协议&#xff0c;它们在功能和应用场景上有所不同。本文将深入解析Socks5代理和HTTP代理的区别&#xff0c;帮助您更好地了解并选择适合…

Linux 信号捕捉函数 signal sigaction

signal函数 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 功能&#xff1a;设置某个信号的捕捉行为 参数&#xff1a; -signum&#xff1a;要捕捉的信号 handler&#xff1a;对捕捉到的信号怎么处理…

安装了多个版本VS导致无法安装vsix

如&#xff0c;先后安装了VS2015、VS2019&#xff0c;现在想给VS2015安装一个qt-vsaddin插件&#xff0c;运行vsix报错 “View Install Log”里显示 2023/9/19 10:03:46 - 正在搜索适用的产品... 2023/9/19 10:03:46 - 找到的已安装产品 - Microsoft Visual Studio Ultimate …