用Qt自制一个小闹钟

小闹钟 

功能

当按下启动按钮时,停止按钮可用,启动按钮不可用,闹钟无法设置,无法输入自定义内容

当按下停止按钮时,暂停播报,启动按钮可用,闹钟可以设置,可以输入自定义内容

.pro文件

QT       += core gui texttospeech
greaterThan(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 += \Icon.qrc

widget.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>      //定时器类
#include <QTime>       //时间类
#include <QTimerEvent>   //定时器事件类的头文件
#include <QDateTime>     //日期时间类
#include <QDateTimeEdit>
#include <QDebug>
#include <QTextToSpeech>    //朗读
#include <QTextEdit>
#include <QMetaObject>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//重写定时器事件处理函数void timerEvent(QTimerEvent *event)override;signals:void my_signal();
private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;//定义一个定时器的idint timer_id;        //基于事件处理函数的定时器int timer_id1;QTextToSpeech *speech;int i = 0;int flag = 0;QString text;QDateTime sys_dt;};
#endif // WIDGET_H

main.cpp文件

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

widget.cpp文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("小闹钟");timer_id = this->startTimer(5);ui->pushButton_2->setEnabled(false);ui->textEdit->setPlaceholderText("请输入闹钟响时播报的内容");this->setWindowIcon(QIcon(":/new/prefix1/666.png"));}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()) //== timer_id)  //用来判断不同的定时器的id{//获取当前系统的日期时间sys_dt = QDateTime::currentDateTime();//展示时间到ui界面的lable2中ui->label->setText(sys_dt.toString("yyyy-MM-dd hh:mm:ss"));//居中显示               标签文本对齐方式ui->label->setAlignment(Qt::AlignCenter);ui->label->setFont(QFont("微软雅黑",20));QString timeText = sys_dt.toString("yyyy-MM-dd hh:mm:ss");QString timeText1 = ui->dateTimeEdit->text();if(flag == 1){if(timeText1 == timeText){speech->say(text); // 朗读文本}}}
}
void Widget::on_pushButton_clicked()
{flag = 1;speech = new QTextToSpeech;text = ui->textEdit->toPlainText();ui->pushButton_2->setEnabled(true);ui->pushButton->setEnabled(false);ui->textEdit->setEnabled(false);ui->dateTimeEdit->setEnabled(false);
}void Widget::on_pushButton_2_clicked()
{flag = 0;ui->pushButton->setEnabled(true);ui->pushButton_2->setEnabled(false);ui->textEdit->setEnabled(true);ui->dateTimeEdit->setEnabled(true);speech->stop();
}

widget.ui文件

 

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

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

相关文章

Springboot项目bootstrap配置未生效、application.yml未读取bootstrap配置文件参数

场景 Springboot项目&#xff0c;application.yml未读取bootstrap配置文件参数 原因 Springboot项目不读取bootstrap.yml配置文件&#xff01;&#xff01;&#xff01; SpringCloud项目才读取bootstrap.yml配置文件&#xff01;&#xff01;&#xff01;

分布式环境集成JWT(Java Web Token)

目录 一&#xff0c;说明&#xff1a;二&#xff0c;Token、Session和Cookie比较三&#xff0c;Spring Boot项目集成JWT1&#xff0c;引入依赖2&#xff0c;Token工具类3&#xff0c;定义拦截器4&#xff0c;注册拦截器5&#xff0c;编写登录代码6&#xff0c;测试 四&#xff…

Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)

文章目录 七、模块和包7.1 模块7.1.1 模块搜索路径7.1.2 PYTHONPATH和sys.path7.1.2 模块的导入和常见错误7.1.3 模块的缓存机制7.1.4 __name__ 和 __main__ 函数 7.2 标准库7.3 包7.3.1 创建包7.3.2 导入包7.3.3 pip包管理器7.3.4 conda 7.4 如何组织和管理大型项目中的模块与…

Vue 2 nextTick方法|异步更新|事件循环

1 nextTick的用处 vm.$netTick的作用是将回调延迟到下次DOM更新周期之后执行。 它接受一个回调函数作为参数。 其实&#xff0c;在我们更新数据状态后&#xff0c;是不会立马渲染的&#xff0c;你不能即刻获取到新的DOM&#xff1a; <!DOCTYPE html> <html><…

算法通关村-----堆在查找和排序中的应用

数组中的第K个最大元素 问题描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。详见le…

[论文笔记]ESIM

引言 这是经典论文Enhanced LSTM for Natural Language Inference的笔记。 本篇论文文是建立在自然语言推理(Natural Language Inference,NLI)任务上的。提出了简单的通过基于LSTM的序列推理模型效果到达了当时的SOTA水平。同时基于该模型,在局部推理建模层和推理组合层使用了…

嵌入式岗位笔试面试专栏 - 岗位介绍

文章目录 一、嵌入式岗位的分类二、热门领域及公司三、发展前景四、技能要求沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解嵌入岗位的工作职责 。 一、嵌入式岗位的分类 嵌入式软件工程师大致可以分为两种类型: 应用开发工程师驱动开发工程师应用工程…

ConstraintLayout约束布局

1.进行复杂页面布局时&#xff0c;最外层的根布局不要用ConstraintLayout. 示例布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.co…

安全基础 --- 原型链污染

原型链 大部分面向对象的编程语言&#xff0c;都是通过“类”&#xff08;class&#xff09;实现对象的继承。传统上&#xff0c;JavaScript 语言的继承不通过 class&#xff0c;而是通过“原型对象”&#xff08;prototype&#xff09;实现 1、prototype 属性的作用 JavaScri…

蝶形运算法

蝶形运算法是一种基于FFT&#xff08;Fast Fourier Transform&#xff09;算法的计算方法&#xff0c;其基本思想是将长度为N的DFT分解成若干个长度为N/2的DFT计算&#xff0c;并通过不断的合并操作得到最终的结果。该算法也称为“蝴蝶算法”&#xff0c;因为它的计算过程中需要…

Git 版本回退 超神步骤

Git 版本回退 一. 背景 多版本分支开发&#xff0c;合并版本问题太多&#xff0c;需要回滚到某次版本。我的git客服端工具是 sourcetree 二.操作步骤 2.1 切到当前需要回退版本的分支 2.2 右击需要具体某一个分支&#xff0c;这个分支就是你想切到的分支版本&#xff0c;具体…

Spark 环境安装与案例演示

Spark 环境安装 一、准备工作 1、hadoop成功安装 2、防火墙关闭 二、解压安装 1、上传 spark 安装包到/tools 目录&#xff0c;进入 tools 下&#xff0c;执行如下命令&#xff1a; tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz -C /training/由于 Spark 的脚本命令和 Hadoop…

HTML <track> 标签

实例 播放带有字幕的视频: <video width="320" height="240" controls="controls"><source src="forrest_gump.mp4" type="video/mp4" /><source src="forrest_gump.ogg" type="video/ogg…

Spring Boot 打包,将依赖全部打进去

一、背景 spring boot 2.4.4 项目&#xff0c;打包&#xff0c;将依赖全部打进去 二、在pom.xml中引入插件 在项目的 pom.xml 文件中&#xff0c;添加 Maven 插件 spring-boot-maven-plugin&#xff0c;示例如下&#xff1a; <build><plugins><!-- ...其他插件…

React 组件化是什么?

React 组件化 一、什么是组件化二、基础组件使用2.1、函数2.2、类2.3、渲染2.4、流程分析2.5、注意 三、参考地址 一、什么是组件化 React 是一个用于构建用户界面的JavaScript库&#xff0c;它采用了组件化的开发模式&#xff0c;使得开发者可以将界面划分为独立的、可重用的…

12 最小覆盖串

最小覆盖串 题解1 滑窗双指针模板&#xff08;labuladong&#xff0c;高效好套&#xff0c;length版&#xff09; 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "&quo…

wpf从cs代码创建简单3D物体和3D Tools研究

前面已经说了&#xff0c;WPF项目中引入3DTools dll之后&#xff0c;在xaml中加入它的命名空间&#xff0c; xmlns:tools"clr-namespace:_3DTools;assembly3DTools" 把<Viewport3D>标签包含在<tools:TrackballDecorator>标签之中&#xff0c;就可以用鼠…

ping: www.baidu.com: Name or service not known 写了DNS还是不行

环境描述&#xff1a;ESXI平台上&#xff0c;一台Centos7虚拟主机。 问题描述&#xff1a;平台上的其他的虚拟机可以正常ping通&#xff0c;就这台ping IP地址可以通&#xff0c;ping域名解析失败。 排查过程&#xff1a; 1、检查网卡配置文件和/etc/resolv.conf配置文件是否…

【SQL学习笔记】关系模型与查询和更新数据

一、关系模型 1.1 主键 主键是关系表中记录的唯一标识。主键的选取非常重要&#xff1a;主键不要带有业务含义&#xff0c;而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL。 可以使用多个列作为联合主键&#xff0c;但联合主键并不常用。 1.2 外键 FOREIGN KEY …

rabbitmq载在.net中批量消费的问题记录

背景 最近遇到了一个问题&#xff0c;在使用rabbitmq的时候出现了丢消息、消息重复消费等一系列的问题&#xff0c;使用的是.net框架&#xff0c;背景是高并发压力下的mq消费&#xff0c;按理说即使队列中堆了几百条消息&#xff0c;我客户端可以同处理5个消息。 原因是多线程…