坐牢第三十七天(Qt)

作业:

使用qt做一个闹钟

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPixmap>
#include <QBitmap>
#include <QLabel>       //标签类
#include <QLineEdit>    //行编辑器类
#include <QPushButton>  //按钮类
#include <QTextEdit> //多行编辑器类
#include <QTimer>  //定时器类
#include <QTime>   //时间类
#include <QtTextToSpeech> //播报员
#include<QMouseEvent>//鼠标事件类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
//鼠标事件
    void mouseMoveEvent(QMouseEvent *event) override;    //鼠标移动事件
    void mousePressEvent(QMouseEvent *event) override;      //鼠标点击事件
public slots:
    void My_slot_1();
    void timeout_slot();
signals:
    void My_signal_1();
private:
    Ui::Widget *ui;
    QLabel *lab_jm;
    QLabel *lab_time;
    QLabel *lab_show;
    QPushButton *btn_1;
    QLineEdit *edit_time;
    QPushButton *btn_2;
    QTextEdit *textedit ;
    /****************************/
    QTimer t1;//定时器
    QTextToSpeech *speecher;//播报员
    QPoint temp;//中间辅助向量
};
#endif // WIDGET_H

widget.cpp

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    /************************************界面************************************/
    //1.设置界面
    this->setFixedSize(800,800);//固定大小
    this->setWindowFlag(Qt::FramelessWindowHint);//设置窗口纯净
    //2.加载背景图
    lab_jm =new QLabel(this);
    lab_jm->move(0,0);
    lab_jm->resize(800,800);
    lab_jm->setPixmap(QPixmap(":/icon/xaingrikui.jpg"));
    lab_jm->setScaledContents(true);
    lab_jm->setWindowOpacity(0.8);

    /***********************************标签*************************************/
    //1.1时间的标签
    lab_time =new QLabel("现在时间",this);
    lab_time->resize(100,100);
    lab_time->move(50,70);
    //创建新字体
    QFont font1;
    font1.setFamily("Arial"); // 设置字体为Arial
    font1.setPointSize(12);   // 设置字体大小为12号
    font1.setBold(true);      // 设置字体为粗体
    // 将新字体应用到行编辑器
    lab_time->setFont(font1);

    //2.1展示具体时间的标签
    lab_show=new QLabel(this);
    lab_show->resize(400,100);
    lab_show->move(lab_time->x(),lab_time->y()+lab_time->height());
    lab_show->setStyleSheet("background-color :rgb(135,206,250));");
    //创建新字体
    QFont font;
    font.setFamily("Arial"); // 设置字体为Arial
    font.setPointSize(16);   // 设置字体大小为16号
    font.setBold(true);      // 设置字体为粗体
    // 将新字体应用到行编辑器
    lab_show->setFont(font);

    /***********************************行编辑器*************************************/
    //写入定时时间行编辑器
    edit_time =new QLineEdit(this);
    edit_time->resize(200,90);
    edit_time->move(lab_show->x()+lab_show->width()+30,lab_show->y());
    //将字体应用到行编辑器
    edit_time->setFont(font);

    /***********************************按钮*************************************/
    //1.启动按钮
    btn_1 =new QPushButton("启动",this);
    btn_1->resize(80,40);
    btn_1->move(edit_time->x()-20,edit_time->y()+edit_time->height()+10);
    btn_1->setFont(font1);

    //2.取消按钮
    btn_2 =new QPushButton("取消",this);
    btn_2->resize(80,40);
    btn_2->move(btn_1->x()+edit_time->width()-40,btn_1->y());
    btn_2->setEnabled(false);
    btn_2->setFont(font1);

    /***********************************播报多行编辑器*************************************/
    //用于写入播报内容的多行编辑器
    textedit =new QTextEdit(this);
    textedit->resize(750,400);
    textedit->move(25,350);
    textedit->setFont(font);

    /***********************************展示时间*************************************/
    //1.启动按钮绑定
    connect(btn_1,&QPushButton::clicked,this,&Widget::My_slot_1);
    //2.由于定时器事件的信号与槽的绑定只需要一次,所以直接写在构造函数中即可
    connect(&t1, &QTimer::timeout, this, &Widget::timeout_slot);
    //3.取消按钮
    connect(btn_2,&QPushButton::clicked,[&]{
        edit_time->clear();
        textedit->clear();
    });
    //给播报员分配内存空间
    speecher =new  QTextToSpeech;
    btn_2->setEnabled(false);
}

Widget::~Widget()
{
    delete ui;
}
//1.启动按钮槽函数
void Widget::My_slot_1()
{
    if(btn_1->text()=="启动")
    {
        //启动一个定时器
        t1.start(1000);        //每隔指定的时间,发送一个timeout的信号
        btn_1->setText("开始");
        btn_2->setEnabled(true);
    }else
    {
        //当在运行脑子时使一些功能和按钮不可用
        btn_1->setEnabled(false);
        edit_time->setReadOnly(true);
        textedit->setReadOnly(true);
    }
}

//2.展示槽函数
void Widget::timeout_slot()
{
    //获取系统的时间
    QTime sysTime = QTime::currentTime();
    //将QTime类对象转变成字符串
    QString tm = sysTime.toString("hh:mm:ss");
    //将时间展示到ui界面上
    lab_show->setText(tm);
    //lab_show->setAlignment(Qt::AlignCenter);//居中
    //行编辑器和时间对比
    if(edit_time->text()== lab_show->text())
    {
        //让播报员播报出多行编辑器里的内容
        speecher->say(textedit->toPlainText());
        //让那些按钮和编辑器变得可用
        btn_1->setEnabled(true);
        edit_time->setReadOnly(false);
        textedit->setReadOnly(false);
    }
}

//界面和鼠标跟着走函数
void Widget::mouseMoveEvent(QMouseEvent *event)//鼠标移动事件
{
    this->move(event->globalPos()-temp);
}
void Widget::mousePressEvent(QMouseEvent *event)//鼠标按下事件
{
    temp=event->globalPos()-this->pos();//求出中间辅助向量
    if(event->button() ==Qt::RightButton)
    {
        this->close();
    }
}

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

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

相关文章

如何创建和编辑抖音百科词条,不会的找我们代创建!

如何创建和编辑抖音百科词条&#xff0c;不会的找我们代创建&#xff01; 如何创建抖音百科个人词条&#xff0c;个人抖音百科的创建 #抖音百科 #百科 #推广 做过百度百科的老板们注意了&#xff0c;等一下别划走。 2024 年品宣新风口出现了&#xff0c;抖音百科正在替代百度…

Flask-JWT-Extended登录验证

1. 介绍 """安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外&#xff0c;你还可以指定其他的选项&#xff0c;例如&#xff1a;过期时间 (max_age)&…

erlang学习:mnesia数据库与ets表1

Mnesia 和 ETS 都是 Erlang 提供的表管理工具&#xff0c;用于存储和检索数据&#xff0c;但它们之间有一些重要的区别和共同点。 共同点 都是Erlang提供的表存储机制&#xff1a;ETS 和 Mnesia 都允许你在内存中创建表&#xff0c;并且可以用来存储键值对或者更复杂的数据结…

VC++以资源方式打开可执行文件

刚看一个资料说可以在VC中&#xff0c;以资源方式打开可执行文件&#xff0c;然后它如果包含对话框一些资源&#xff0c;会呈现出来&#xff0c;可以把其他程序界面上的控件直接拷贝到自己程序&#xff1b; 但是操作了一下没有成功&#xff0c; 先新建一个空对话框准备拷贝东…

Modbus_tcp

目录 一&#xff1a;modbus起源 1.起源 2. 分类&#xff1a; 3. 优势&#xff1a; 4. 应用场景&#xff1a; 5.ModbusTCP特点&#xff08;掌握&#xff09;&#xff1a; 二、 ModbusTCP的协议 1. 报文头 2. 寄存器 1. 线圈&#xff08;Coils&#xff09; 2. 离…

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来&#xff0c;之后就是将broker启动起来&#xff0c;broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic&#xff0c;因为发消息的逻辑和收消…

虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统

欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中&#xff0c;零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试&#xff0c;提出了基于虹科Baby-LIN系列产…

【教程】鸿蒙ARKTS 打造数据驾驶舱---前序

鸿蒙ARKTS 打造数据驾驶舱 ​ 前面2章我介绍了如何通过定义View绘制箭头以及圆形进度&#xff0c;初步了解了鸿蒙如何进行自定义View。接下来我将通过我最近在带的一个VUE的项目&#xff0c;简单实现了几个鸿蒙原生页面。帮助大家快速上手纯血鸿蒙开发. 本项目基于Api11Stage模…

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

概述 在Qt中&#xff0c;可以使用样式表&#xff08;StyleSheet&#xff09;来自定义 QMenu 的外观&#xff0c;包括其子项&#xff08;如菜单项QAction&#xff09;的颜色。但是&#xff0c;这通常可以设置 QMenu 的整体样式&#xff0c;而不能单独设置某个子项的颜色。不过&…

Cobalt Strike的下载与基本用法

CobaltStrike4.8 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;tgf3 what Cobalt Strike是一款渗透测试神器&#xff0c;常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用&#xff0c;它分为客户端与服务端&#xff0c;服务端是一个&…

第六部分:1---进程间通信,匿名管道

目录 进程间通信 进程间通信的目的&#xff1a; 进程间通信的本质&#xff1a; 管道&#xff1a; 管道的定义&#xff1a; 匿名管道 单向通信的管道通路&#xff1a; 进程和文件之间的解耦&#xff1a; 单向管道的读写端回收问题&#xff1a; 管道通信主要实现动态数…

Java多线程-(线程的创建,线程安全,线程状态)

第一章.创建线程的方式 1.第一种方式_extends Thread 1.定义一个自定义线程类继承Thread 2.重写run方法(run方法是用于设置线程任务的) 3.创建自定义线程类对象 4.调用Thread类中的start方法(start方法:开启线程,jvm自动执行run方法) public class MyThread extends Thread{…

MacOS安装MAT教程

MAT下载地址MAT下载地址MAT下载地址MAT下载地址 如果不知道你的芯片类型, 可以执行如下命令 uname -m

VMware中安装win7和kail等虚拟机

主要内容 第一部分 安装win 7第二部分 安装kali第三部分 安装UbuntuUbuntu22.04上安装PwntoolsUbuntu上安装vim 第四部分 安装win 10office Word全套安装教程 第一部分 安装win 7 1.打开安装好的虚拟机 参考链接&#xff1a;虚拟机VMware安装windows7 64位操作系统&#x…

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章

一、目标&#xff1a; windows中&#xff0c;打开chromium&#xff0c;任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角&#xff0c;加上"有1条新消息"的小提示图标&#xff0c;也叫徽章(badge)注意&#xff1a;本章节纯属娱乐&#xff0c;有需要…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色&#xff0c;它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析&#xff0c;并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题

问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…

Spring4-IoC2-基于注解管理bean

目录 开启组件扫描 使用注解定义bean Autowired注入 场景一&#xff1a;属性注入 场景二&#xff1a;set注入 场景三&#xff1a;构造方法注入 场景四&#xff1a;形参注入 场景五&#xff1a;只有一个构造函数&#xff0c;无注解 场景六&#xff1a;Autowired和Quali…

4款AI生成PPT工具推荐,提升工作效率

在如今的工作环境中&#xff0c;PPT制作是许多技术人员不可避免的任务&#xff0c;尤其是在汇报、展示技术方案、以及项目进展时。随着AI技术的快速发展&#xff0c;使用AI生成PPT成为了提高效率的一种新趋势。本文将介绍几款适合程序员、技术人员的AI生成PPT工具&#xff0c;帮…

C++伟大发明--模版

C起初是不受外界关注的&#xff0c;别人觉得他和C语言没有本质上的区别&#xff0c;只是方便些&#xff0c;直到祖师爷发明了模版&#xff0c;开始和C语言有了根本的区别。 我们通过一个小小的例子来搞清楚什么是模版&#xff0c;模版的作用到底有多大&#xff0c;平时我们想要…