当前位置: 首页 > news >正文

QT设计一个小闹钟

        设置一个闹钟,左侧窗口显示当前时间,右侧设置时间,以及控制闹钟的开关,下方显示闹钟响时的提示语。当按启动按钮时,设置时间与闹钟提示语均不可再改变。当点击停止时,关闭闹钟并重新启用设置时间与闹钟提示语。

闹钟窗口展示:

工程管理文件:

QT       += core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cppHEADERS += \widget.hFORMS += \widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetRESOURCES += \picture.qrc

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QLabel>   //标签
#include <QTextEdit>    //文本编辑器
#include <QLineEdit>    //行编辑器
#include <QPushButton>  //按钮#include <QTimerEvent>  //事件处理函数
#include <QDateTime>
#include <QtTextToSpeech>    //播报员
#include <QPaintEvent>
#include <QPainter>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic slots://定义启动按钮的槽函数void on_btnStart_clicked();//定义停止按钮的槽函数void on_btnStop_clicked();public:Widget(QWidget *parent = nullptr);~Widget();//重写定时器事件处理函数void timerEvent(QTimerEvent *event) override;void paintEvent(QPaintEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mousePressEvent(QMouseEvent *event) override;private:Ui::Widget *ui;QLabel *lab_time;QPushButton *btn_start;QPushButton *btn_stop;QLineEdit *line_setTime;QTextEdit *text_show;int time_id;    //基于事件处理函数QString oclock;   //设置闹钟QTextToSpeech *speak;   //设置播报员QPoint drap;
};
#endif // WIDGET_H

主函数:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w; w.show();return a.exec();
}

主要功能函数:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化一个播报员speak = new QTextToSpeech(this);time_id = this->startTimer(1000);//纯净窗口this->setWindowFlag(Qt::FramelessWindowHint);//固定窗口尺寸this->setFixedSize(540,410);//显示当前时间lab_time = new QLabel(this);lab_time->setAlignment(Qt::AlignCenter);lab_time->setStyleSheet("border:2px solid rgb(0, 170, 255);font:16pt;border-radius:10px;color:white");lab_time->setGeometry(20,20,300,120);//设置text窗口text_show = new QTextEdit(this);text_show->setPlaceholderText("请输入闹钟提示语");text_show->setAlignment(Qt::AlignCenter);text_show->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:5px;font:20pt;background-color:transparent;color:white");text_show->setGeometry(20,150,500,250);//显示设置的时间line_setTime = new QLineEdit(this);line_setTime->setPlaceholderText("请设置时间");line_setTime->setAlignment(Qt::AlignCenter);line_setTime->setStyleSheet("border:2px solid rgb(0, 170, 255);font:16pt;border-radius:10px;background-color:transparent;color:white");line_setTime->setGeometry(350,20,170,60);//启动按钮btn_start = new QPushButton(this);btn_start->setText("启动");btn_start->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:10px;font:14pt;color:white");btn_start->setGeometry(350,90,80,50);//停止按钮btn_stop = new QPushButton(this);btn_stop->setText("停止");btn_stop->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:10px;font:14pt;color:white");btn_stop->setGeometry(440,90,80,50);//启动按钮connect(btn_start, &QPushButton::clicked, this, &Widget::on_btnStart_clicked);connect(btn_stop, &QPushButton::clicked, this, &Widget::on_btnStop_clicked);}Widget::~Widget()
{delete ui;
}void Widget::on_btnStart_clicked()
{oclock = line_setTime->text();line_setTime->setEnabled(false);text_show->setEnabled(false);btn_start->setText("已启动");
}void Widget::on_btnStop_clicked()
{line_setTime->setEnabled(true);text_show->setEnabled(true);speak->stop();btn_start->setText("启动");
}
void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId() == time_id){QDateTime time = QDateTime::currentDateTime();lab_time->setText(time.toString("yyyy-MM-dd hh:mm:ss"));if(oclock == time.toString("hh:mm:ss")){speak->say(text_show->toPlainText());}}
}void Widget::paintEvent(QPaintEvent * event)
{QPainter painter(this);painter.drawPixmap(rect(),QPixmap(":/picture/back.jpg"),QRect());
}void Widget::mousePressEvent(QMouseEvent *event)
{drap = event->globalPos() - this->pos();//右键关闭窗口if(event->button() == Qt::RightButton){this->close();}
}void Widget::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos() - drap);
}

相关文章:

QT设计一个小闹钟

设置一个闹钟&#xff0c;左侧窗口显示当前时间&#xff0c;右侧设置时间&#xff0c;以及控制闹钟的开关&#xff0c;下方显示闹钟响时的提示语。当按启动按钮时&#xff0c;设置时间与闹钟提示语均不可再改变。当点击停止时&#xff0c;关闭闹钟并重新启用设置时间与闹钟提示…...

MybatisPlus(3)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 一、查询投影&#x1f36d; 查询投影是指在查询操作中&#xff0c;只选择…...

安全计算环境技术测评要求项

1.身份鉴别-在应用系统及各类型设备中确认操作者身份的过程&#xff08;身份鉴别和数据保密&#xff09; 1-2/2-3/3-4/4-4 a&#xff09;应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换 b&#xff09;应具有…...

Excel快捷键表

工作表插入新工作表ShiftF11或AltShiftF1移动到工作簿中的下一张工作表CtrlPageDown移动到工作簿中的上一张工作表CtrlPageUp选定当前工作表和下一张工作表ShiftCtrlPageDown取消选定多张工作表Ctrl PageDown选定其他的工作表CtrlPageUp选定当前工作表和上一张工作表ShiftCtrlP…...

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权&#xff0c;比如物理服务器CPU插槽数量2&#xff…...

【智慧工地源码】物联网和传感器技术在智慧工地的应用

物联网&#xff08;IoT&#xff09;和传感器技术在智慧工地中扮演着至关重要的角色。这些技术的应用&#xff0c;使得智慧工地能够实现对施工过程的精确监控、数据收集和分析&#xff0c;以及设备互联&#xff0c;从而提高工程效率、减少成本并改善工人的工作环境。 一、物联网…...

计算机安全学习笔记(IV):基于角色的访问控制 - RBAC

RBAC(Role-Based Access Control)基于用户在系统中设定的角色而不是用户的身份。一般来说&#xff0c;RBAC模型定义角色为组织中的一项工作职责&#xff0c;RBAC系统给角色而不是给单独的用户分配访问权。用户根据他们的职责被静态地或动态地分配给不同的角色。 RBAC模型间的关…...

MFC中的Button修改颜色的方法

添加工具箱下面的MFC Button Control控件&#xff08;不使用普通的Button控件&#xff09;&#xff1b;给按键添加变量&#xff1a;m_MFCButton1&#xff0c;变量类型&#xff08;默认&#xff09;为&#xff1a;CMFCButton&#xff1b;testDlg.cpp中初始化中添加如下代码&…...

【算法】选择排序

选择排序 选择排序代码实现代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a; 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&…...

golang之context实用记录

简言 WithCancel()函数接受一个 Context 并返回其子Context和取消函数cancel 新创建协程中传入子Context做参数&#xff0c;且需监控子Context的Done通道&#xff0c;若收到消息&#xff0c;则退出 需要新协程结束时&#xff0c;在外面调用 cancel 函数&#xff0c;即会往子C…...

音视频FFmpeg简单理解学习,必学技术

FFmpeg是一个开源的多媒体框架&#xff0c;它包含了一个用于音频和视频编解码的库。它可以执行各种多媒体操作&#xff0c;如格式转换、视频剪辑、音频处理等。可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 FFmpeg的结构 默认的编译会生成…...

一款内网信息收集利用工具

FuckDomainMini 简介 这是一款基于java开发Windows的内网信息收集、利用工具 可以节省您的信息收集所花费的&#xff0c;又或者是做免杀所花费的时间 现在这个版本是先行版本&#xff0c;目前先行版只有一个功能&#xff0c;更多的功能还在调试与开发中。 尽情期待&#x…...

数据库表的操作

目录 一、表的创建 1、创建语法 2、创建案例 二、查看表结构 三、修改表 1、修改表名 2、添加记录 3、修改列属性 4、添加列&#xff08;字段&#xff09; 5、删除列&#xff08;字段&#xff09; 6、修改列名字 四、删除表 五、修改表结构的风险 1、风险 2、建议 一、表的创建…...

Golang开发--channel的使用

在 Go 语言中&#xff0c;channel&#xff08;通道&#xff09;是一种用于在 goroutine 之间进行通信和同步的并发原语。它提供了一种安全且简单的方式来传递数据。 通道的详细描述和使用方法 1.定义通道&#xff1a; 通道是通过使用 make 函数来创建的。通道有特定的类型&am…...

SQL sever中表管理

目录 一、创建表&#xff1a; 1.1语法格式&#xff1a; 1.2示例&#xff1a; 二、修改表&#xff1a; 2.1语法格式&#xff1a; 2.2示例&#xff1a; 三、删除表&#xff1a; 3.1语法格式&#xff1a; 3.2示例&#xff1a; 四、查询表&#xff1a; 4.1语法格式&…...

CSSoverflow 属性

overflow 属性用于设置当元素中的内容溢出后的情况。 值得注意的是: 所谓溢出&#xff0c;是指子元素的大小&#xff08;包括文本、元素或图片等&#xff09;超出父元素的区域&#xff0c;会有一部分内容显示在父元素所在的区域外。 属性值描述visible默认值。内容不会被修剪&a…...

08:STM32----DMA数据转运

目录 1:简历 2:存储器映像 3:DMA基本结构 4: DMA转运的条件 5:DMA请求 A:DMA数据转运 1:连接图 2:数据转运DMA 3:函数介绍 4:步骤 5:代码 B:DMAAD多通道 1:连接图 2:结构图 3:函数介绍 4:代码 1:简历 DMA&#xff08;Direct Memory Access&#xff09;直接存储…...

Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解

上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 的使用方法&#xff0c;govulncheck 强大功能的背后&#xff0c;离不开 Go 漏洞数据库&#xff08;Go vulnerability database&#xff09;的支持&#xff0c;接下来详细讲解下 Go 漏洞数据库相关的知识。 Go 漏洞数…...

[JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树

系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String&#xff0c;分析内存地址&#xff0c;源码 [JDK8环境下的HashMap类应用及源码分析] 第一篇 空构造函数初始化 [JDK8环境下的HashMap类应用及源码分…...

高等数学刷题

两个公式本质都是相同的 Π/2 1^∞类型...

WinDirStat:Windows磁盘空间分析与清理的终极解决方案

WinDirStat&#xff1a;Windows磁盘空间分析与清理的终极解决方案 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat WinDirStat是一款专为W…...

BEAGLE库终极指南:如何快速实现高性能系统发育分析

BEAGLE库终极指南&#xff1a;如何快速实现高性能系统发育分析 【免费下载链接】beagle-lib general purpose library for evaluating the likelihood of sequence evolution on trees 项目地址: https://gitcode.com/gh_mirrors/be/beagle-lib 你是否在系统发育分析中遇…...

谷歌CEO官宣“75%新代码AI写”:当AI代码量占比逼近阈值,你的工程质量如何托底?

2026年4月22日&#xff0c;谷歌CEO桑达尔皮查伊在Cloud Next 2026大会上扔出一枚重磅炸弹&#xff1a;谷歌内部75%的新代码已由AI编写&#xff0c;经工程师审核后合并。这一数字比去年秋天的50%又跃升了一大截。同时&#xff0c;第八代TPU、Workspace Intelligence等多款AI产品…...

别再自己编译了!Ubuntu 18.04下用apt一键安装Intel RealSense D435i驱动(附避坑指南)

告别编译烦恼&#xff1a;Ubuntu 18.04下Intel RealSense D435i驱动一键安装全攻略 在计算机视觉和机器人开发领域&#xff0c;Intel RealSense系列深度相机因其出色的性能和相对亲民的价格&#xff0c;成为了许多开发者的首选硬件。然而&#xff0c;对于初次在Linux系统下配置…...

BallonsTranslator:3分钟搞定漫画翻译的终极AI辅助工具

BallonsTranslator&#xff1a;3分钟搞定漫画翻译的终极AI辅助工具 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地址: https…...

Coze(扣子)工作流使用攻略 操作指南(2026最新版)

Coze工作流&#xff08;Workflow&#xff09;是实现复杂AI任务的核心工具&#xff0c;它通过可视化拖拽节点的方式&#xff0c;将大模型、插件、代码、数据库等组件组合成自动化流程。适合处理多步骤、结构化任务&#xff08;如内容生成、数据分析、图像处理、客服流程等&#…...

别再折腾Java环境了!用Docker一键部署BurpSuite社区版,5分钟开箱即用

用Docker容器化技术5分钟部署BurpSuite社区版&#xff1a;告别Java环境配置噩梦 在网络安全领域&#xff0c;BurpSuite无疑是Web应用渗透测试的瑞士军刀。但传统安装方式需要配置Java环境、处理兼容性问题&#xff0c;甚至不少用户为了功能完整而冒险使用破解版。现在&#xf…...

AlphaAvatar:从单目视频重建可驱动3D数字人的混合表示框架

1. 项目概述&#xff1a;从“数字人”到“阿尔法化身”的进化最近在数字人、虚拟形象生成这个圈子里&#xff0c;AlphaAvatar这个名字开始被频繁提及。它不是一个简单的换脸工具&#xff0c;也不是一个预设的3D模型库&#xff0c;而是一个旨在从单目视频中&#xff0c;高质量、…...

Python-ADB协议实现原理:深入理解ADB和Fastboot通信机制

Python-ADB协议实现原理&#xff1a;深入理解ADB和Fastboot通信机制 【免费下载链接】python-adb Python ADB Fastboot implementation 项目地址: https://gitcode.com/gh_mirrors/py/python-adb Python-ADB是一个强大的开源项目&#xff0c;提供了ADB&#xff08;Andr…...

基于AI宏观流动性监测框架的黄金三日连跌研究:美联储加息预期按兵不动后的市场重定价逻辑

摘要&#xff1a;本文通过AI宏观利率模型、美元流动性监测系统与黄金波动率因子分析&#xff0c;结合美通胀数据、美债收益率变化及市场利率预期重定价过程&#xff0c;分析黄金连续三日回落背后的核心驱动逻辑&#xff0c;并探讨当前“高利率持续”环境下黄金资产的阶段性压力…...