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

news2024/9/20 12:38:22

思维导图:

编程

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个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_OBJECT

public:
    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_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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.coloradmin.cn/o/1465439.html

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

相关文章

OpenAI Sora视频模型技术原理报告解读

▌01. OpenAI Sora 视频生成模型技术报告总结 •不管是在视频的保真度、长度、稳定性、一致性、分辨率、文字理解等方面。 •技术细节写得比较泛&#xff08;防止别人模仿&#xff09;大概就是用视觉块编码&#xff08;visual patch&#xff09;的方式&#xff0c;把不同格…

k8s-heml联动harbor 18

将打包的heml包上传到harbor仓库进行管理 创建一个公开的项目来接收传送的heml包 安装helm-push插件&#xff1a; helm plugin install https://github.com/chartmuseum/helm-push &#xff08;在线安装&#xff0c;要求网速要快或者提供科学上网&#xff09; 离线安装&…

庖丁解牛-二叉树的遍历

庖丁解牛-二叉树的遍历 〇、前言 01 文章内容 一般提到二叉树的遍历&#xff0c;我们是在说 前序遍历、中序遍历、后序遍历和层序遍历 或者说三序遍历层序遍历&#xff0c;毕竟三序和层序的遍历逻辑相差比较大下面讨论三序遍历的递归方法、非递归方法和非递归迭代的统一方法然…

linux drm mipi dsi lcd 点屏之设备树配置

linux drm mipi dsi lcd 点屏之设备树配置 设备树文档&#xff1a; https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/bindings/display/dsi-controller.yaml https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/binding…

卫星地面站监测系统仿真

当今世界&#xff0c;大国竞争日趋激烈&#xff0c;国际关系愈发紧张&#xff0c;信息与通信已经是当下高度信息化社会的“命脉”&#xff0c;信息只有经过有效且广泛地传播&#xff0c;才能成为一种有利用价值的资源&#xff0c;产生经济效益、推动社会发展。通信技术在发展的…

C语言运用中断子系统用驱动控制led实验,c语言串口led点灯实验(驱动+应用层)

中断子系统用驱动控制led实验 驱动代码 #include <linux/init.h> #include <linux/module.h>#include<linux/interrupt.h> #include<linux/gpio.h> #include<linux/timer.h>#include<linux/of.h> #include<linux/of_irq.h> #inclu…

QQ防红跳转短网址生成网站完整源码

使用此源码可以生成QQ自动跳转到浏览器的短链接&#xff0c;无视QQ报毒&#xff0c;任意网址均可生成。 全新界面&#xff0c;网站背景图采用Bing随机壁纸 支持生成多种短链接 兼容电脑和手机页面 生成网址记录功能&#xff0c;域名黑名单功能 网站后台可管理数据 安装说明&am…

《图解HTTP》笔记2:http的构成

1&#xff0c;查看浏览器上面一个具体的http请求 浏览器地址栏输入网址&#xff1a;https://news.baidu.com/ 使用浏览器的开发者工具&#xff0c;查看网络中发送和接受的数据。 可以看到输入一个网址&#xff0c;浏览器和服务器进行了很多的交互。&#xff08;绿色部分&#…

【深蓝学院】移动机器人运动规划--第6章 模型预测控制(MPC)与运动规划--笔记

0. Outline 1. Reactive Control&#xff08;反应式控制&#xff09; 控制学中的 “Reactive Control” 通常指的是一种控制策略&#xff0c;它依赖于系统对特定事件或变化的即时反应&#xff0c;而不是按照预定的计划或策略行动。这种控制往往是基于当前的传感器输入来做出决…

盘点自动化汽车生产线设备 数据采集分析联合各设备

1.机器人自动装配线 机器人自动装配线已成为汽车制造业中的常见场景。这些机器人在汽车组装的各个环节发挥关键作用&#xff0c;从焊接和铆接到零部件组装。它们不仅提高了装配速度&#xff0c;还确保了产品的一致性&#xff0c;降低了废品率。 2.3D打印技术 3D打印技术正在汽车…

电商API接口接入|电子商务市场最简单的数据采集方法,你学到了吗?

小刘从某职业院校电子商务专业毕业后&#xff0c;-直在某品牌电商部负责运营工作&#xff0c;近期&#xff0c;同班同学小王邀请小刘加入创业大军&#xff0c;共同开设网店&#xff0c;销售家乡的螃蟹、鲜虾、扇贝等生鲜水产。 运营经验丰富的小刘决定&#xff0c;在创业开始前…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我们使用 Jenkins 集成外部 Git 仓库&#xff0c;实现对真实代码的拉取和构建。在这里&#xff0c;我们选用 Coding/Github/Gitee 等都可以作为我们的代码源 1 生成公钥私钥 首先&#xff0c;我们先来配置公钥和私钥。这是 Jenkins 访问 Git 私有库…

mysql 事务详解一

前言 提到事务&#xff0c;大家肯定不陌生。在我们现实生活中也是存在的&#xff0c;比如我们去超市购物&#xff0c;然后去支付。虽然是两个步骤&#xff0c;必须保证同时成功&#xff0c;这个交易才可以完成。 如果这个场景&#xff0c;拿到我们购物系统&#xff0c;就是几…

智能高压森林应急消防泵|保障森林安全|深圳恒峰

随着科技的不断发展&#xff0c;我们的生活质量得到了显著提升。在森林保护领域&#xff0c;一项创新技术正在发挥着关键作用——智能高压森林应急消防泵。这种设备不仅提高了灭火效率&#xff0c;更为森林资源的安全保驾护航。 在过去&#xff0c;面对森林火灾&#xff0c;消防…

AIDL的工作原理与使用示例 跨进程通信 远程方法调用RPC

AIDL的介绍与使用 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android中用于定义客户端和服务端之间通信接口的一种接口定义语言。它允许你定义客户端和服务的通信协议&#xff0c;用于在不同的进程间或同一进程的不同组件间进行数据传递。AIDL通过…

LDR6020芯片驱动未来:TYPE-C桌面显示器的新篇章

TYPE-C接口桌面显示器&#xff0c;与传统显示器截然不同。它不仅在视频传输方面表现出色&#xff0c;还融入了创新的充电功能。利用显示器的DC电源&#xff0c;可以轻松转换成PD协议&#xff0c;为笔记本、任天堂等HOST设备提供稳定的充电服务。 兼容性&#xff1a;连接无忧 …

redis GEO 类型原理及命令详解

目录 前言 一、GeoHash 的编码方法 二、Redis 操作GEO类型 前言 我们有一个需求是用户搜索附近的店铺&#xff0c;就是所谓的位置信息服务&#xff08;Location-Based Service&#xff0c;LBS&#xff09;的应用。这样的相关服务我们每天都在接触&#xff0c;用滴滴打车&am…

文件夹无法压缩是怎么回事?分享3种简单的方法~

在日常使用电脑的过程中&#xff0c;我们经常需要对文件夹进行压缩&#xff0c;以节省存储空间或方便传输。然而&#xff0c;有时候我们可能会遇到文件夹无法压缩的情况&#xff0c;这可能会让人感到困惑。本文将探讨文件夹无法压缩的原因&#xff0c;并提供解决方法&#xff0…

谷粒商城-nginx搭建域名访问环境性能压测

nginx搭建域名访问环境 正向代理与反向代理 正向代理&#xff1a;客户端向代理服务器发请求并指定目标服务器&#xff0c;代理向目标服务器转交请求并将获得的内容返回给客户端。 反向代理&#xff1a;用户直接访问反向代理服务器就可以获得目标服务器的资源。反向代理服务器…

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(二)

一、需求分析 随着科技的飞速发展&#xff0c;视频监控联网技术在公安工作中发挥着越来越重要的作用。为了提高公安部门对各类事件的响应速度和处理能力&#xff0c;建设一个高效、稳定的公安视频联网共享云平台显得尤为重要。通过建设开放的视频联网共享云平台&#xff0c;实…