Qt制作一个简单闹钟

news2025/4/7 17:10:08

增加testtospeech模块

QT       += core gui texttospeech

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimerEvent>
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
#include <QTextToSpeech>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

    void timerEvent(QTimerEvent *e) override;


private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    int start_id = 0;
    int set_id = 0;
    bool flag = 0;
    QTextToSpeech *speecher;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    , speecher(new QTextToSpeech(this))
{
    ui->setupUi(this);
    start_id = startTimer(1000);

}

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


void Widget::on_pushButton_clicked()
{
    if(ui->pushButton->text() == "Setting")
    {
        flag = 1;
        ui->pushButton->setText("Cancel");
//        set_id = startTimer(1000);
    }
    else
    {
        flag = 0;
        ui->pushButton->setText("Setting");
//        killTimer(set_id);
    }
}

void Widget::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == start_id)
    {
        //获取系统时间
        QTime sysTime = QTime::currentTime();
        ui->label_sysTime->setText(sysTime.toString());
        //方法1:
        if(ui->setTime->text() == sysTime.toString()&&flag)
        {
            for(int i = 0;i<5;i++)
            {
                speecher->say(ui->text->text());
            }
            ui->pushButton->setText("Setting");
            flag = 0;
        }
    }
    if(e->timerId() == set_id)
    {
        //方法2:
        //获取系统时间
//        QTime sysTime = QTime::currentTime();
//        if(ui->setTime->text() == sysTime.toString())
//        {
//            for(int i = 0;i<5;i++)
//            {
//                speecher->say(ui->text->text());
//            }
//
//            ui->pushButton->setText("Setting");
//            flag = 1;
//        }
    }
}

ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <property name="styleSheet">
   <string notr="true"/>
  </property>
  <widget class="QLabel" name="label_sysTime">
   <property name="geometry">
    <rect>
     <x>80</x>
     <y>50</y>
     <width>281</width>
     <height>151</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <pointsize>34</pointsize>
    </font>
   </property>
   <property name="text">
    <string/>
   </property>
   <property name="alignment">
    <set>Qt::AlignCenter</set>
   </property>
  </widget>
  <widget class="QPushButton" name="pushButton">
   <property name="geometry">
    <rect>
     <x>510</x>
     <y>130</y>
     <width>141</width>
     <height>71</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <pointsize>18</pointsize>
    </font>
   </property>
   <property name="text">
    <string>Setting</string>
   </property>
  </widget>
  <widget class="QLabel" name="text">
   <property name="geometry">
    <rect>
     <x>80</x>
     <y>270</y>
     <width>611</width>
     <height>251</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <pointsize>46</pointsize>
    </font>
   </property>
   <property name="text">
    <string>it's time to go</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="setTime">
   <property name="geometry">
    <rect>
     <x>440</x>
     <y>50</y>
     <width>271</width>
     <height>61</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <pointsize>16</pointsize>
    </font>
   </property>
   <property name="alignment">
    <set>Qt::AlignCenter</set>
   </property>
   <property name="placeholderText">
    <string>hh:mm:ss</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

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

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

相关文章

Java编程题_面向对象和常用API01_B级

Java编程题_面向对象和常用API01_B级 第1题 面向对象、异常、集合、IO 题干: 请编写程序&#xff0c;完成键盘录入学生信息&#xff0c;并计算总分将学生信息与总分一同写入文本文件 需求&#xff1a;键盘录入3个学生信息(姓名,语文成绩,数学成绩) 求出每个学生的总分 ,并…

tcpdump 网络数据包分析工具

简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的…

24个未授权访问漏洞详情

一、Redis未授权访问漏洞 第一步&#xff1a;进⼊vulhub⽬录使⽤以下命令启动靶机 进⼊⽬录&#xff1a;cd /vulhub-master/redis/4-unacc 启动&#xff1a;docker-compose up -d 检查&#xff1a;docker ps 第二步&#xff1a;在Kali上安装redis程序进⾏服务的链接 #安装r…

python3中条件判断语句:if 语句与if嵌套语句

一. 简介 本文开始学习 python3中条件判断语句。Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 二. python3中条件判断语句&#xff1a;if 语句与 if嵌套语句 1. if 语句 Python中if语句的一般形式如下所示&…

vue实现下拉多选、可搜索、全选功能

最后的效果就是树形的下拉多选&#xff0c;可选择任意一级选项&#xff0c;下拉框中有一个按钮可以实现全选&#xff0c;也支持搜索功能。 在mounted生命周期里面获取全部部门的数据&#xff0c;handleTree是讲接口返回的数据整理成树形结构&#xff0c;可以自行解决 <div c…

在 Unity 6 中为您的世界创建全局照明的新方法(三)

本文是Unity 6全局光照功能介绍系列中的最后一篇文章&#xff0c;在上篇文章中我们为大家介绍了关于使用沙漠绿洲场景创建实时光照的案例&#xff0c;在本文中我们将承接上篇文章继续为大家介绍如何使用Unity 6中的APV探针功能在URP管道中的另一个案例“花园场景”中创建实时光…

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天&#xff0c;p116-p120 总结&#xff0c;总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如&#xff1a;16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful i…

Python的简单爬虫框架

爬虫为网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、…

优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变

优化站群SEO&#xff1a;使用苹果CMS泛目录插件实现泛目录页面刷新不变 在当今数字营销环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是提升网站流量和可见性的关键策略。苹果CMS作为一款灵活的内容管理系统&#xff0c;提供了丰富的插件功能&#xff0c;尤其是…

Spring Cloud由入门到精通

文章目录 1.初识微服务1.1. 单体架构1.2.分布式架构1.3.微服务1.4 微服务技术比对1.5.Spring Cloud1.6. 总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.项目工程结构设计2.2.2.创建Maven项目工程2.3.实现远程调用案例2.3.1.案例需求:2.3.2. 注册 Rest Templ…

【RK3588 Linux 5.x 内核编程】-内核I2C子系统介绍

内核I2C子系统介绍 文章目录 内核I2C子系统介绍1、内核中的I2C子系统2、内核中的I2C驱动2.1 获取I2C适合器2.2 创建i2c_board_info与设备2.3 创建设备ID和I2C驱动2.4 数据传输2.4.1 发送数据2.4.2 读取数据3、I2C总线如何工作I2C 是一种用于双线接口的串行协议,用于连接低速设…

GPIO相关寄存器,点灯

目录 一.输入模式 1.浮空输入 2.上拉输入 3.下拉输入 4.模拟输入 二.输出模式 1.推挽输出 2.开漏输出 三.寄存器 1.寄存器的作用 2.功能与类型 3.控制某一引脚输出电压来点灯所需要控制的寄存器 1.打开对应时钟开关 2.端口模式寄存器 ---输出模式 3.输出类型寄存…

【基础篇】三、MySQL表结构的操作

文章目录 Ⅰ. 创建表1、语法2、创建表样例3、创建和其它表一样结构的表 Ⅱ. 查看表结构1、查看数据库中的表2、查看指定表的属性3、获取表的创建语句 Ⅲ. 删除表Ⅳ. 修改表结构1、向表中插入新的字段2、删除表中的字段3、修改表名4、修改字段属性 Ⅰ. 创建表 1、语法 create …

Ethernet 系列(12)-- 基础学习::SOME/IP

目录 1. SOME/IP简介&#xff1a; 1.1 什么是SOME/IP&#xff1a; 1.2 什么时候使用SOME/IP&#xff1a; 2. SOME/IP的特点&#xff1a; 2.1 序列化&#xff1a; 2.2 远程过程调用&#xff08;RPC&#xff09;: 2.3 服务发现&#xff1a; 2.4 发布/订阅&#xff1a; 2.5 UDP消息…

前端小案例——轮播图(HTML+CSS+JS, 附源码)

一、前言 实现功能&#xff1a; 显示多张图片&#xff0c;每张图片占据轮播图容器的一部分空间。实现向左和向右的切换按钮&#xff0c;可以点击按钮切换到上一张或下一张图片。在底部显示小圆点&#xff0c;表示当前显示的图片&#xff0c;点击小圆点可以跳转到对应的图片。…

vue封装弹窗元素拖动指令

项目开发过程中我们通常会遇到需要到一些弹窗鼠标可以随意拖动位置去放置&#xff0c;vue里面直接通过封装对应的指令即可&#xff0c;于是封装了一个出来&#xff0c;希望可以用到。 Vue.directive(draggable-dom, draggableDom); 组件节点添加对应指令就可以 v-draggable-…

Supermap iClient Webgl 粒子特效案例-消防场景

作者&#xff1a;Lzzzz 前言 WebGL 粒子特效的应用场景非常广泛&#xff0c;几乎可以在任何需要丰富视觉效果或动态表现的地方看到其身影。通过灵活运用颗粒系统&#xff0c;开发者可以创造出引人入胜的用户体验和视觉表现。 一、效果展示 二、实现步骤 1&#xff0c;构建…

关于无线AP信道调整的优化(锐捷)

目录 一、信道优化的基本原则二、2.4G频段信道优化三、5G频段信道优化四、信道优化代码具体示例五、其他优化措施 一、信道优化的基本原则 信道优化旨在减少信道间的干扰&#xff0c;提高网络覆盖范围和信号质量。基本原则包括&#xff1a; 1. 选择合适的信道&#xff1a;根据…

Rocky9网络基本连接配置

1.修改主机名称 终端模式下&#xff1a; hostnamectl set-hostname server2执行过程中可能要输入密码 hostnamectl命令查看主机信息&#xff0c;可以查看到主机信息已经发生修改&#xff0c;之后reboot重启主机。 2.关闭防火墙 systemctl stop firewalld systemctl disable fi…

一款汽车连接器(HSD(4+2))信号完整性仿真

下面是一款汽车连接器HSD(42) 的3D外形&#xff1a; 其爆炸图如下&#xff1a; 下面是Rosenboger同款产品的2D图&#xff1a; 其信号完整性参数如下&#xff1a; 下面介绍一下如何给上面的3D模型做信号完整性仿真。 在介绍仿真前先介绍一下上面的一些参数&#xff1a;上面的参数…