坐牢第三十七天(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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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"); // 设置字体为Arialfont1.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"); // 设置字体为Arialfont.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();}
}
相关文章:

坐牢第三十七天(Qt)
作业: 使用qt做一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QBitmap> #include <QLabel> //标签类 #include <QLineEdit> //行编辑器类 #include <QPushBu…...

Vidu 全球首发「主体参照」新功能,一键同步角色特征;GPT-4o 实时音频项目负责人离职创业丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...

电子地图的主要功能与应用
电子地图,即数字地图,是利用计算机技术,以数字方式存储和查阅的地图。它不仅继承了传统纸质地图的基本功能,还通过现代科技手段实现了诸多创新应用。以下是电子地图的主要功能与应用: 一、主要功能 快速存取与显示&…...

基于Java+SpringBoot+Vue+MySQL的西安旅游管理系统网站
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的西安旅游管理系统网站【附源码文档】、…...

简单介绍 NVIDIA推出的图形处理单元(GPU)架构“安培架构“
概念 "安培架构"(Ampere Architecture)是 NVIDIA 推出的一款图形处理单元(GPU)架构,它是继图灵架构之后的下一代产品。安培架构最初在2020年发布,以其高性能和高效率而闻名,广泛应用…...

Qiskit:量子计算的Python工具包
Qiskit是由IBM开发的开源量子计算软件开发工具包,它提供了一套完整的工具,用于量子电路的设计、模拟、优化和执行。Qiskit支持量子算法的开发,并且可以与IBM的量子计算机硬件进行交互。 Qiskit的主要特点 量子电路设计:Qiskit允…...

Python——贪吃蛇
以下是一个简单的贪吃蛇游戏的Python代码示例: import pygame import time import random# 初始化 Pygame pygame.init()# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 设置屏幕尺寸 screen_width …...

WPF 依赖属性与附加属性(面试长问)
在WPF中,**依赖属性(Dependency Property)和附加属性(Attached Property)**是WPF依赖属性系统的重要组成部分。它们虽然都基于依赖属性系统,但用途、定义方式和使用场景有显著差异。以下是两者的详细解释及…...

Python 中的各括号用法
括号的使用 在Python中,括号和中括号有不同的用途: 圆括号 (): 函数调用:当你调用一个函数时,需要使用圆括号,即使没有参数。print("Hello, World!") # 调用print函数表达式分组:在…...

业务流程建模(BPM)的重要性及其应用
什么是业务流程建模(BPM)? 业务流程建模(BPM)是对企业内各项业务流程进行图形化描述的一种方法。它旨在通过可视化的方式帮助企业理解和分析现有的业务流程,从而发现潜在的问题并进行改进。BPM通常采用流程…...

isxdigit函数讲解 <ctype.h>头文件函数
目录 1.头文件 2.isxdigit函数使用 方源一把抓住VS2022,顷刻 炼化! 1.头文件 以上函数都需要包括头文件<ctype.h> ,其中包括 isxdigit 函数 #include<ctype.h> 2.isxdigit函数使用 isxdigit 函数是判断字符是否为十六进制数…...

Linux中安装NextCloud
切换为 root 账号 Ubutu 系统默认登录的用户为非 root 权限用户,为了能正常安装 nextCloud,需要切换为 root 账号。执行如下命令即可: sudo su 更新及安装基础包 请依次运行如下命令,有遇到询问的Is this ok [y/d/N]的时候直接键…...

【编程基础知识】什么是数据库事务
事务(Transaction)是数据库管理系统中的一个基本概念,用于确保数据库操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability…...

移植案例与原理 - XTS子系统之应用兼容性测试用例开发
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 startup子系统之syspara_lite系统属性部件 (1) startup子系统之syspara_lite系统属性部件 (2) startup子系…...

关于linux里的df命令以及inode、数据块-stat链接数以及关于awk文本处理命令中内置函数sub、gsub、sprintf
一、关于linux里的df命令以及inode、数据块-stat链接数 Linux中df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,平常这个命令也用得很多,但一般就是使用df -h查看各个分区的空间使用情况,除此外也可以使用df查看当前linux系统…...

如何本地搭建Whisper语音识别模型
要在本地搭建Whisper语音识别模型,您需要以下几个步骤: 步骤一:系统准备 操作系统: 建议使用Ubuntu 20.04或以上版本,确保系统足够稳定和兼容。硬件配置: 最好有一个强大的GPU,因为语音识别涉及大量的计算工作。推荐…...

微信小程序仿微信聊天界面
界面结构: 消息列表: 使用 scroll-view 实现滚动,每条消息使用 view 组件包裹,根据消息类型 (文本、图片、文件) 显示不同内容。输入框区域: 包含输入框 (textarea)、发送按钮 (button) 和上传文件按钮 (view 组件模拟)。头像: 使用 image 组件展示。 …...

文件用电脑生成的在线技巧,能够轻松将多种类型文件转二维码
现在为了能够更加快捷将文件分享给其他人查看,很多人会通过制作二维码的方式来存储文件,这样可以减少文件对内存的占用,而且用户扫码获取内容也更加的方便快捷。二维码能够随时更新内容,可以长期通过一个二维码来提供个不同的内容…...

QT实现TCP/UDP通信
服务器端: 客户端: 服务器: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDebug&…...

流程自动化变革:看低代码开发如何赋能企业创新转型
在数字化转型的浪潮中,企业面临着前所未有的挑战和机遇。为了保持竞争力,企业必须快速适应市场变化,创新业务模式,并提高运营效率。流程自动化成为企业转型的关键,而低代码开发平台如JNPF,正成为推动这一变…...

可提示 3D 分割研究里程碑!SAM2Point:SAM2加持泛化任意3D场景、任意提示!
郑重声明:本解读已获得论文作者的原创解读授权 文章链接:https://arxiv.org/pdf/2408.16768 在线demo: https://huggingface.co/spaces/ZiyuG/SAM2Point code链接:https://github.com/ZiyuGuo99/SAM2Point 亮点直击 无投影 3D 分割࿱…...

Rabbitmq中得RPC调用代码详解
文章目录 1.RPC客户端2.RabbitMQ连接信息实体类3.XML工具类 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 直接上代码了 1.RPC客户端 …...

ISAC: Toward Dual-Functional Wireless Networks for 6G and Beyond【论文阅读笔记】
此系列是本人阅读论文过程中的简单笔记,比较随意且具有严重的偏向性(偏向自己研究方向和感兴趣的),随缘分享,共同进步~ Integrated Sensing and Communications: Toward Dual-Functional Wireless Networks for 6G and…...

split 分割字符串方法解析,substring 截取字符串方法解析;二者的作用和区别?使用时需要注意什么?附代码和运行图
目录 一. 摘要 二. split 方法 2.1 String[] split(String regix) 2.2 String[] split(String regix,int limit) 2.3.1 当 int < 0时,会按照最大数量切割字符串 2.3.2 当 int 0时,此时就和第一个方法一样了,等于没有传入…...

HTTP 协议的基本格式
HTTP协议("超文本传输协议"),是一个被广泛使用应用层协议,自1991年正式发布HTTP协议以来,HTTP协议就一直在更新,目前已经更新到3.0版本,但是目前主流的依旧是1.1版本,但依旧是一个最主流使用的应…...

STM32-HAL库开发快速入门
注:本文主要记录一下STM32CubeMX软件的使用流程,记录内容以STM32外设(中断、I2C、USART、SPI等配置)在STM32CubeMX中的设置为主,对驱动代码编写不做记录,所以阅读本文最好有标准库开发经验。除第2节外,使用的都是韦东山…...

vue3-print打印eletable某一行的数据
主页面的表格 <template><el-table :data"list"><el-table-column label"操作" align"center"><template #default"scope"><el-buttonlinktype"primary"click"handleType(scope.row)"…...

【Vue】pnpm创建Vue3+Vite项目
初始化项目 (1)cmd切换到指定工作目录,运行pnpm create vue命令,输入项目名称后按需安装组件 (2)使用vs code打开所创建的项目目录,Ctrl~快捷键打开终端,输入pnpm install下载项目…...

springboot配置多数据源
springboot配置多数据源 学习新技术,争做新青年,欢迎围观,河南老乡在上海请,加,微,andyfau2022, ----获取数据源:null,数据源为null时默认使用主数据源的。 1-yml文件…...

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案
墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切…...