0110qt

news2024/11/17 3:38:44

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

 ok_after.h:

#ifndef OK_AFTER_H
#define OK_AFTER_H

#include <QWidget>

namespace Ui {
class ok_after;
}

class ok_after : public QWidget
{
    Q_OBJECT

public:
    explicit ok_after(QWidget *parent = nullptr);
    ~ok_after();
public slots:
    void ok_signal_slot(); //ok_after界面的槽函数,需要实现
private:
    Ui::ok_after *ui;
};

#endif // OK_AFTER_H

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>//调试类
#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 ok_signal();//登录对话框信号,无需实现

private:
    Ui::Widget *ui;
public slots:
    void cancel_btn_slot();
    void login_btn_slot();
private slots:
    void on_login_btn_clicked();
};
#endif // WIDGET_H

main.cpp:

#include "widget.h"
#include "ok_after.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    //实例化Ok_after对象
    ok_after ok;
    //将widget和ok_after两个界面连接
    QObject::connect(&w,&Widget::ok_signal,&ok,&ok_after::ok_signal_slot);

    return a.exec();
}

ok_after.cpp:

#include "ok_after.h"
#include "ui_ok_after.h"

ok_after::ok_after(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ok_after)
{
    ui->setupUi(this);
}

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

void ok_after::ok_signal_slot()
{
    this->show();//展示ok_after界面"hello,world"
}

widget.cpp:

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置大标签图片
    ui->lab->setPixmap(QPixmap(":/picture/logo.png"));
    //设置图片自适应标签大小
    ui->lab->setScaledContents(true);
    //设置账户标签
    ui->useName_lab->setPixmap(QPixmap(":/picture/login.png"));
    ui->useName_lab->setScaledContents(true);
    //设置密码标签
    ui->passwd_lab->setPixmap(QPixmap(":/picture/passwd.png"));
    ui->passwd_lab->setScaledContents(true);
    //设置密码行编辑器
    ui->passwd_Edit->setEchoMode(QLineEdit::Password);
    //使用手动连接,将取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数
    connect(ui->cancel_btn,SIGNAL(clicked()),this,SLOT(cancel_btn_slot()));
    //将登录按钮使用qt5版本的连接到自定义的槽函数中
    connect(ui->login_btn,&QPushButton::clicked,this,&Widget::login_btn_slot);

}

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


//qt4版本自定义的槽函数,(取消按钮)
void Widget::cancel_btn_slot()
{
    //基于属性版本的有参构造函数
    QMessageBox mes(QMessageBox::Question,
                    "cancel",
                    "您是否确定要退出登录?",
                    QMessageBox::Yes|QMessageBox::No,
                    this);
    //调用exec()弹出取消对话框
    int ret=mes.exec();
    if(ret==QMessageBox::Yes)
    {
        this->close();//关闭登录界面
    }
    else if(ret==QMessageBox::No)
    {

    }

}
//qt5版本自定义的登录对话框对应的槽函数
void Widget::login_btn_slot()
{
    //账户和密码匹配成功
    if(ui->useName_Edit->text()=="admin" && ui->passwd_Edit->text()=="123456")
    {
        //基于属性版本的有参构造函数
        QMessageBox msg(QMessageBox::NoIcon,
                        "login",
                        "登录成功",
                        QMessageBox::Ok,
                        this);
        //调用exec()弹出对话框
        int ret=msg.exec();
        if(ret==QMessageBox::Ok)
        {
            this->close();//关闭登录界面
            emit this->ok_signal();//跳转到其他页面

        }

    }
    else//账户和密码匹配失败
    {
        //静态成员函数版
        int res=QMessageBox::information(
                    this,
                "error",
        "账号和密码不匹配,是否重新登录?",
               QMessageBox::Yes | QMessageBox::No
                    );
        if(res==QMessageBox::Yes)
        {
            //清除密码框中的内容
            ui->passwd_Edit->clear();
        }
        else if(res==QMessageBox::No)
        {
            this->close();
        }

    }
}


登录成功现象:

点击ok之后

 登陆失败:

 点击yes后清空密码框:

 按下取消按钮之后的现象:

 qt-day3 - 幕布

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

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

相关文章

注意力机制简单理解

1. 什么是注意力机制&#xff1f; ​ 我们在日常的生活中对许多事物都有我们自己的注意力重点&#xff0c;通过注意力我们可以更加关注于我们注意的东西&#xff0c;从而过滤不太关注的信息。 看到一张人像图时&#xff0c;我们会更关注人的脸部&#xff0c;其次根据脸部再细分…

VScode 画图插件

开源免费的插件 随着http://draw.io开源vs code插件之后&#xff0c;它一跃成为最强大的流程图工具。 目前http://draw.io支持3种文件后缀&#xff0c;你只需要新建3种后缀之一的文件就可以在vs code中画流程图&#xff0c;它们分别是&#xff1a; *.drawio*.dio*.drawio.sv…

使用KubeSphere轻松部署Bookinfo应用

Bookinfo 应用 这个示例部署了一个用于演示多种 Istio 特性的应用&#xff0c;该应用由四个单独的微服务构成。 如安装了 Istio&#xff0c;说明已安装 Bookinfo。 这个应用模仿在线书店的一个分类&#xff0c;显示一本书的信息。 页面上会显示一本书的描述&#xff0c;书籍…

【JVM 基础】类字节码详解

JVM 基础 - 类字节码详解 多语言编译为字节码在JVM运行Java字节码文件Class文件的结构属性从一个例子开始反编译字节码文件字节码文件信息常量池方法表集合类名 再看两个示例分析try-catch-finallykotlin 函数扩展的实现 源代码通过编译器编译为字节码&#xff0c;再通过类加载…

06.构建大型语言模型步骤

在本章中,我们为理解LLMs奠定了基础。在本书的其余部分,我们将从头开始编写一个代码。我们将以 GPT 背后的基本思想为蓝图,分三个阶段解决这个问题,如图 1.9 所示。 图 1.9 本书中介绍的构建LLMs阶段包括实现LLM架构和数据准备过程、预训练以创建基础模型,以及微调基础模…

设计模式—行为型模式之策略模式

设计模式—行为型模式之策略模式 策略&#xff08;Strategy&#xff09;模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。属于对象行为模式。 策略模式的主要角色如下。 抽象策略&…

uni-app分包预下载

模块的二级页面&#xff0c;按模块处理成分包页面&#xff0c;有以下好处&#xff1a; 按模块管理页面&#xff0c;方便项目维护。减少主包体积&#xff0c;用到的时候再加载分包&#xff0c;属于性能优化解决方案。 ::: tip 温馨提示 通过 VS Code 插件 uni-create-view 可…

对root用户的理解

1.什么是root用户&#xff1f; Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受…

圣诞老人遇见 GenAI:利用大语言模型、LangChain 和 Elasticsearch 破译手写的圣诞信件

在北极的中心地带&#xff0c;圣诞老人的精灵团队面临着巨大的后勤挑战&#xff1a;如何处理来自世界各地儿童的数百万封信件。 圣诞老人表情坚定&#xff0c;他决定是时候将人工智能纳入圣诞节行动了。 圣诞老人坐在配备了最新人工智能技术的电脑前&#xff0c;开始在 Jupyter…

大气精美网站APP官网HTML源码

源码介绍 大气精美网站APP官网源码&#xff0c;好看实用&#xff0c;记事本修改里面的内容即可&#xff0c;喜欢的朋友可以拿去研究 下载地址 蓝奏云&#xff1a;https://wfr.lanzout.com/itqxN1ko2ovi CSDN免积分下载&#xff1a;https://download.csdn.net/download/huayu…

Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!

响应与Rest风格 1.11.1.1 环境准备步骤1:设置返回页面步骤2:启动程序测试 1.1.2 返回文本数据步骤1:设置返回文本内容步骤2:启动程序测试 1.1.3 响应JSON数据响应POJO对象响应POJO集合对象 知识点1&#xff1a;ResponseBody 2&#xff0c;Rest风格2.1 REST简介2.2 RESTful入门案…

node的下载、安装、配置

下载&#xff1a; 官网下载&#xff1a;Node.js 左右两个都可以&#xff1a; 往期版本&#xff1a; Index of /dist/latest-v8.x/ 安装&#xff1a; 打开cmd&#xff1a; 输入以下指令&#xff0c;如果出现版本号说明安装成功 node -v npm -v 如果npm -v报错&#xff0c;就…

什么是Helm?它是如何提升云原生应用私有化部署效率的

转载至我的博客 &#xff0c;公众号&#xff1a;架构成长指南 试想一下&#xff0c;如果有一个项目有50 个微服务&#xff0c;每个微服务都有service、deployment、ingress、pvc等 yaml 文件&#xff0c;算下来大概有 200 个文件&#xff0c;然后这个项目需要基于k8s进行私有化…

从零学Java List集合

Java List集合 文章目录 Java List集合1 List 集合2 List实现类2.1 ArrayList【重点】2.2 LinkedList2.3 Vector (已废弃) 3 数据结构: 栈, 队列 1 List 集合 特点&#xff1a;有序、有下标、元素可以重复。 有序: 添加与遍历的顺序是一致的;有下标: 可以使用普通for循环;元素可…

【NLP】多标签分类【上】

简介 《【NLP】多标签分类》主要介绍利用三种机器学习方法和一种序列生成方法来解决多标签分类问题&#xff08;包含实验与对应代码&#xff09;。共分为上下两篇&#xff0c;上篇聚焦三种机器学习方法&#xff0c;分别是&#xff1a;Binary Relevance (BR)、Classifier Chain…

实用Unity3D Log打印工具XDebug

特点 显示时间&#xff0c;精确到毫秒显示当前帧数&#xff08;在主线程中的打印才有意义&#xff0c;非主线程显示为-1&#xff09;有三种条件编译符(如下图) 注&#xff1a;要能显示线程中的当前帧数&#xff0c;要在app启动时&#xff0c;初始化mainThreadID字段条件编译符…

在App Store Connect上编辑多个用户的访问权限

作为一名编程新手&#xff0c;在App Store Connect中管理用户权限可能初听起来有些复杂&#xff0c;但实际上它是一个相对直接的过程。这里是一个步骤清晰的指南来帮助您在App Store Connect上编辑多个用户的访问权限。 App Store Connect 简介 在开始之前&#xff0c;让我们先…

爬虫网易易盾滑块及轨迹算法案例:某乎

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、滑块初步分析 js运行 atob(‘aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbg’) 拿到网址&#xff0c;浏览器打开网站&#xff0…

【低照度图像增强系列(3)】EnlightenGAN算法详解与代码实现

前言 ☀️ 在低照度场景下进行目标检测任务&#xff0c;常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题&#xff0c;给检测带来一定的难度。 &#x1f33b;使用图像增强模块对原始图像进行画质提升&#xff0c;恢复各类图像信息&#xff0c;再使用目标检…

如何降低成本,制作个性化电子产品宣传册呢

​随着科技的飞速发展&#xff0c;电子产品已经深入到我们生活的每一个角落。然而&#xff0c;如何让你的产品在众多竞争者中脱颖而出呢&#xff1f;制作一份个性化的宣传册&#xff0c;不仅可以吸引潜在客户&#xff0c;还能有效降低成本&#xff0c;提升销售效果。 一、明确目…