2024.6.18 作业 xyt

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

//day3_04.h
#ifndef DAY3_04_H
#define DAY3_04_H

#include <QWidget>
#include <QMessageBox>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class day3_04; }
QT_END_NAMESPACE

class day3_04 : public QWidget
{
    Q_OBJECT

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

signals:
    void my_jump();  //第一个界面的信号

private slots:
    void on_pushButton_2_clicked();

    void on_pushButton_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_3_clicked();

private:
    Ui::day3_04 *ui;
};
#endif // DAY3_04_H
//day3_04.cpp
#include "day3_04.h"
#include "ui_day3_04.h"

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

    //去掉头部
    this->setWindowFlag(Qt::FramelessWindowHint);

    //去掉空白部分
    this->setAttribute(Qt::WA_TranslucentBackground);
}

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


void day3_04::on_pushButton_2_clicked()
{
    this->close();
}

void day3_04::on_pushButton_clicked()
{
    //获取输入的文本
    QString user1 = ui->user->text();
    QString line1 = ui->line->text();

    if(user1.isEmpty() || line1.isEmpty())
    {
        QMessageBox::warning(this, "Warning", "请输入账号或密码");
    }
    else
    {
        //判断账号和密码正确性
        if(user1 == "admin" && line1 == "123456")
        {
            QMessageBox::information(this, "Access Granted", "登陆成功");

            //关闭窗口
            this->close();

            //触发信号
            emit my_jump();
        }
        else
        {
            int ret = QMessageBox::warning(this, "Access Denied",
                                 "账号和密码不匹配,是否重新登录",
                                 QMessageBox::Yes | QMessageBox::No
                                 );
            //根据函数的返回值,判断选中的按钮
            if(ret == QMessageBox::Yes)
            {
                ui->user->clear();
                ui->line->clear();
            }
            else
            {
                //关闭窗口
                this->close();
            }

            ui->user->clear();
            ui->line->clear();
        }
    }
}


void day3_04::on_pushButton_6_clicked()
{
    this->showMinimized();
}

void day3_04::on_pushButton_3_clicked()
{
    //弹出警告对话框

    //使用QMessageBox 实例化一个对象 有参构造
    QMessageBox msg(QMessageBox::Warning,  //图标
                      "警告",  //标题
                      "您是否确定要退出登录?",  //文本
                      QMessageBox::Yes | QMessageBox::No,  //按钮
                      this  //指定父组件
                      );
    //2.调用exec()弹出对话框
    int ret = msg.exec();

    //3.根据用户的选择,执行不同的功能
    if(ret == QMessageBox::Yes)
    {
        //关闭窗口
        this->close();
    }
    else
    {
        QMessageBox::close;
    }
}
//main.cpp
#include "day3_04.h"
#include "second.h"  //包含第二个头文件

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //实例化第一个界面
    day3_04 w;
    w.show();

    //实例化第二个界面
    Second s;

    //连接
    QObject::connect(&w, &day3_04::my_jump, &s, &Second::jump_slot);

    return a.exec();
}

2.  使用定时器事件 实现闹钟

//day4_04_zuoye.h
#ifndef DAY4_04_ZUOYE_H
#define DAY4_04_ZUOYE_H

#include <QWidget>
#include <QDebug>
#include <QTime>
#include <QTextToSpeech>
QT_BEGIN_NAMESPACE
namespace Ui { class day4_04_zuoye; }
QT_END_NAMESPACE

class day4_04_zuoye : public QWidget
{
    Q_OBJECT

public:
    day4_04_zuoye(QWidget *parent = nullptr);
    ~day4_04_zuoye();
    void timerEvent(QTimerEvent *e);
signals:
    void signal_time();

private slots:
    void on_pushButton_clicked();

    void my_slots_time();

private:
    Ui::day4_04_zuoye *ui;
    int hh;
    int sid;
    //定义一个语音播报者
    QTextToSpeech speech;

};
#endif // DAY4_04_ZUOYE_H
//day4_04_zuoye.cpp
#include "day4_04_zuoye.h"
#include "ui_day4_04_zuoye.h"

day4_04_zuoye::day4_04_zuoye(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::day4_04_zuoye)
{
    ui->setupUi(this);
       sid = startTimer(1000);
    connect(this,&day4_04_zuoye::signal_time,this,&day4_04_zuoye::my_slots_time);
}

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

void day4_04_zuoye::on_pushButton_clicked()
{
    if(ui->pushButton->text() == "启动")
    {
        hh = 1;
        ui->pushButton->setText("关闭");
    }
    else
    {
        hh = 0;
        ui->pushButton->setText("启动");
    }
}

void day4_04_zuoye::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == sid)
    {
        QTime sys_time = QTime::currentTime();
        QString t = sys_time.toString("hh:mm:ss");
        ui->label_2->setText(t);
        ui->label_2->setAlignment(Qt::AlignCenter);
        qDebug() << t << ui->lineEdit->text();
        if(t == ui->lineEdit->text() && hh == 1)
        {
            emit signal_time();
        }
    }
}


void day4_04_zuoye::my_slots_time()
{
    QString textToSpeak = ui->label_4->text();
    qDebug() << textToSpeak;
    if(!textToSpeak.isEmpty())
    {
        for(int a=0; a<5; ++a)
        {
            speech.say(textToSpeak);
        }

    }
}
//main.cpp
#include "day4_04_zuoye.h"

#include <QApplication>

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

    return a.exec();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【shell脚本速成】for 嵌套和和 if 高级用法

文章目录 一、for嵌套二、for与数组三、if高级用法3.1、条件符号使用双圆括号&#xff0c;可以在条件中植入数学表达式 if (())3.2、使用双方括号,可以在条件中使用通配符 四、简写if五、与文件存在与否的判断六、课后练习 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &…

智能网站管理系统

智能网站管理系统&#xff0c;即智能化的网站管理工具&#xff0c;是为了提高网站管理效率和简化操作流程而开发的一种软件系统。它集合了各种先进的技术和功能&#xff0c;为网站管理员提供了一套强大而可靠的解决方案。 智能网站管理系统的核心功能是网站内容管理。传统的网站…

MySQL 基本语法讲解及示例(上)

第一节&#xff1a;MySQL的基本操作 1. 创建数据库 在 MySQL 中&#xff0c;创建数据库的步骤如下&#xff1a; 命令行操作 打开 MySQL 命令行客户端或连接到 MySQL 服务器。 输入以下命令创建一个数据库&#xff1a; CREATE DATABASE database_name;例如&#xff0c;创建一…

(资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料

今天给大家带来的不是软件&#xff0c;而是一份精神食粮——《知行合一》的教程福利。这可不是一般的教程&#xff0c;它关乎心灵&#xff0c;关乎智慧&#xff0c;关乎我们如何在纷繁复杂的世界中找到自己的位置。 咱们得聊聊王阳明&#xff0c;这位明代的大儒&#xff0c;他…

看完这篇文章你才能了解什么是大模型

引言 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术迅速崛起&#xff0c;成为全球科技领域的热门话题。大模型&#xff08;Large Language Model&#xff09;技术以其庞大的参数和复杂的结构&#xff0c;为AI提供了强大的计算和学习能力&#xff0c;推动着AI技术…

【proteus仿真】基于51单片机的秒表设计

【proteus仿真】基于51单片机的秒表设计 资料获取在文章结尾处&#xff01; 更多资料获取链接&#xff1a; https://docs.qq.com/sheet/DTExIc2dPUUJ5enZZ?tabBB08J2 1.资料内容 源码proteus仿真图 演示视频&#xff1a; 【proteus仿真】基于51单片机的秒表设计_哔哩哔…

​【数据结构与算法】冒泡排序:简单易懂的排序算法解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、冒泡排序原理 &#x1f343;基本思想&#xff1a; &#x1f343;算法…

为什么传统 CNN 可能无法进行基于纹理的分类?

作者&#xff1a;Mayank Gubba、Mohammed Faisal、Trapti Kalra、Vijay Pandey 将纹理分析与深度学习结合使用对于在机器视觉任务中取得更好的结果起着重要作用。在第一篇博客中&#xff0c;我们讨论了“纹理”的基础知识、不同类型的纹理以及纹理分析在解决实际计算机视觉任务…

Windows系统下制作Windows 11系统U盘启动及安装指导

Windows系统下制作Windows 11系统U盘启动及安装指导 一、准备工作 U盘不得小于8G(推荐使用usb3.0接口)&#xff1b;下载好对应的系统镜像&#xff1b;下载RUFUS或者软通碟U盘制作启动软件&#xff1b; 二、Windows操作系统下制作U盘启动&#xff08;这里以使用RUFUS软件为例&…

Java对象头的组成

介绍对象头之前先说一下Java对象内部的组成结构&#xff1a; 1&#xff0c;成员变量&#xff08;Data1...DataN&#xff09; 2, 对象头 Java对象头的组成&#xff08;根据对象头分析对象状态借此优化代码&#xff09; <dependency> <groupId>org.openjdk.jol&l…

MB-iSTFT-VITS 模型论文思路与实验分享:基于VITS架构优化的轻量级文本转语音模型

参考文献&#xff1a; [1] Kawamura M, Shirahata Y, Yamamoto R, et al. Lightweight and high-fidelity end-to-end text-to-speech with multi-band generation and inverse short-time fourier transform[C]//ICASSP 2023-2023 IEEE International Conference on Acoustics…

【C#上位机应用开发实战】—机器视觉检测

#机器视觉 在现代工业生产中&#xff0c;机器视觉检测技术扮演着越来越重要的角色。它通过计算机视觉技术来实现对工件的自动化检测和判断&#xff0c;大大提高了生产效率和产品质量。而在机器视觉检测的应用中&#xff0c;C#作为一种简洁易用且功能强大的编程语言&#xff0c…

搭贝低代码开发平台:高效、灵活、经济的软件开发解决方案

在当今快速发展的数字化时代&#xff0c;企业对于快速、灵活且成本效益高的软件开发需求日益增长。搭贝低代码开发平台以其强大的功能和用户友好的体验&#xff0c;正在成为众多企业&#xff0c;特别是中小企业&#xff0c;软件开发的首选工具。 &#x1f4c8; 什么是低代码开发…

鸿蒙开发网络管理:【@ohos.net.socket (Socket连接)】

Socket连接 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import socket from ohos.net.socket;socket.constructUDPSocketInstance constructUDPSocketInstance(): UDPSocket 创建…

061、Python 包:模块管理

包&#xff08;Package&#xff09;是一种用于组织模块的层次结构。包实际上就是一个包含了__init__.py文件的目录&#xff0c;该文件可以为空或包含包的初始化代码。通过使用包&#xff0c;可以更好地组织和管理大型项目中的模块&#xff0c;避免命名冲突&#xff0c;并提高代…

利用C#和Snap7工具模拟S7通信(包含DB地址讲解)

之前写过一篇用KepServerEx做模拟S7的通信数据&#xff0c;参考链接&#xff1a; 通过C#和KepServer完成模拟S7协议通信_c# 与kepserver-CSDN博客 但KepServerEx是收费的&#xff0c;而且模拟的DB块超过64就不行了&#xff0c;当然Snap7在本文中也是只能模拟DB1、DB2和DB3的数…

HTML 全局属性介绍及示例

HTML 全局属性是一组可以在任何HTML元素中使用的属性。这些属性提供了一种方式来定义元素的通用行为或外观。以下是一些常见的HTML全局属性及其示例。 id id 属性为元素提供了一个唯一的标识符。它不能在 <head>, <html>, <meta>, <script>, <sty…

数据压缩还能这么玩,国产数据库有救了!

页级压缩 opengauss数据库是以数据页面&#xff08;Page&#xff09;为单位进行压缩解压&#xff0c;本特性自openGauss 3.0.0版本开始引入&#xff0c;通过对数据页的透明页压缩和维护页面存储位置的方式&#xff0c;做到高压缩、高性能。提高数据库对磁盘的利用率。 页级压缩…

FL Studio没有声音怎么办 FL Studio声音卡顿怎么办

FL Studio是一款综合创作歌曲的宿主软件&#xff0c;这款软件的里面内置了很多效果器和插件&#xff0c;非常适合创作电子音乐&#xff0c;很多创作电子音乐的小伙伴都喜欢使用此款软件。不过有些刚接触FL Studio的小伙伴&#xff0c;在使用此软件的时候&#xff0c;会出现一些…

openh264 帧间预测编码原理:WelsMdP16x16函数

openh264 帧间预测编码 帧间预测编码是视频压缩技术中的关键方法之一&#xff0c;它主要用于减少视频序列中时间维度上的冗余。这种编码方式依赖于视频帧之间的空间相关性&#xff0c;通过预测和补偿来减少数据量&#xff0c;从而实现高效的视频压缩。帧间预测编码广泛应用于各…