QT、事件处理机制

news2024/11/26 13:33:12

闹钟

 widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>  //定时器
#include <QTime>  //shijian
#include <QTimerEvent> //定时器事件类
#include <QDateTime> //日期实间类
#include <QTextToSpeech>  //语音播报

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

    //播报指针
    QTextToSpeech *speech;

protected:
    void timerEvent(QTimerEvent *event)override;   //重写定时器事件处理函数

private slots:

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;

    //使用定时器类定义一个定时器指针
    QTimer *timer;

    //定义整型变量,记录启动的定时器
    int time;

    //定义变量接时间

    QString dt; //系统时间
};
#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);

    //给播报申请空间
    speech = new QTextToSpeech(this);

    //执行启动定时器
    time = this->startTimer(1);

}

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


//启动按钮
void Widget::on_pushButton_clicked()
{
    //语音播报
    //speech->say(ui->textEdit->toPlainText());
    //1.获取界面文本:toPlainText

    //设置组件是否可用
    ui->textEdit->setEnabled(false);
    ui->lineEdit->setEnabled(false);

}

//重写定时器事件处理函数的定义
void Widget::timerEvent(QTimerEvent *event)
{

    if(event->timerId() == time)
    {
        //获取系统日期时间
        QDateTime sys_dt = QDateTime::currentDateTime();

        //将日期时间转换为字符串
        dt = sys_dt.toString("hh:mm:ss");

        //将时间展示到ui界面
        ui->label->setText(dt);
    }

    //对比时间
    if(ui->lineEdit->text() == dt)
    {
        speech->say(ui->textEdit->toPlainText());
    }

}

//关闭按钮
void Widget::on_pushButton_2_clicked()
{
    //执行关闭功能
    this->killTimer(time);
    //设置组件是否可用
    ui->textEdit->setEnabled(true);
    ui->lineEdit->setEnabled(true);

}

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

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

相关文章

【C++】特殊类设计+单例模式+类型转换

目录 一、设计一个类&#xff0c;不能被拷贝 1、C98 2、C11 二、设计一个类&#xff0c;只能在堆上创建对象 1、将构造设为私有 2、将析构设为私有 三、设计一个类&#xff0c;只能在栈上创建对象 四、设计一个类&#xff0c;不能被继承 1、C98 2、C11 五、设计一个…

UNIX环境高级编程——进程控制

8.1 引言 本章介绍UNIX系统的进程控制&#xff0c;包括&#xff1a; 创建新进程、执行程序、进程终止进程属性ID——实际、有效、保存的用户ID和组ID解释器文件system函数进程会计机制 8.2 进程标识 进程ID&#xff1a;一个非负整数&#xff0c;进程的唯一标识。 进程ID可…

【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

文章目录 1. 原始DBO算法2. 改进后的IDBO算法2.1 Bernoulli混沌映射种群初始化2.2 自适应因子2.3 Levy飞行策略2.4 动态权重系数 3. 部分代码展示4. 效果图展示5. 资源获取 1. 原始DBO算法 详细介绍此处略&#xff0c;可参考DBO算法介绍 2. 改进后的IDBO算法 2.1 Bernoulli混…

【Linux问题合集002】解决虚拟机里面的Linux系统部分无法上网情况,保姆级教程

&#x1f340;一、前言 正如标题所说&#xff0c;解决虚拟机里面的Linux系统部分无法上网情况&#xff0c;这个网络问题的原因有很多种可能&#xff0c;这篇博客不一定能够解决所有朋友的网络问题&#xff0c;但是如果遇到和我一样情况的&#xff0c;我保证解决步骤一定是非常详…

使用 Python 创建端到端聊天机器人

使用 Python 创建端到端聊天机器人 1. 效果图2. 原理2.1 什么是端到端聊天机器人&#xff1f;2.2 创建端到端聊天机器人步骤 3. 源码3.1 streamlit安装3.2 源码 参考 聊天机器人是一种计算机程序&#xff0c;它了解您的查询意图以使用解决方案进行回答。聊天机器人是业内最受欢…

《LKD3粗读笔记》(11)定时器和时间管理

文章目录 1、内核中的时间概念2、 节拍率&#xff1a;HZ3、jiffies4、硬时钟和定时器5、时钟中断处理程序6、实际时间7、定时器8、延迟执行 1、内核中的时间概念 硬件为内核提供了一个系统定时器用以计算流逝的时间&#xff0c;该时钟在内核中可看成是一个电子时间资源&#x…

Nginx安装删除JDK Tomcat Redis

1.卸载Nginx ps -ef|grep nginx 查询Nginx 进程pid 如上图 master是主进程, worker是工作进程, master负责维护worker进程 Nginx启动后默认启动master进程和worker进程 Nginx默认使用端口80 kill -9 7035 或者 kill -term 7035 kill -9 7036 查找根下所有名字包…

带你搞懂人工智能、机器学习和深度学习!

不少高校的小伙伴找我聊入门人工智能该怎么起步&#xff0c;如何快速入门&#xff0c;多长时间能成长为中高级工程师&#xff08;聊下来感觉大多数学生党就是焦虑&#xff0c;毕业即失业&#xff0c;尤其现在就业环境这么差&#xff09;&#xff0c;但聊到最后&#xff0c;很多…

07 Kubernetes 网络与服务管理

课件 Kubernetes Service是一个抽象层&#xff0c;用于定义一组Pod的访问方式和访问策略&#xff0c;其作用是将一组Pod封装成一个服务&#xff0c;提供一个稳定的虚拟IP地址和端口号&#xff0c;以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…

FPGA时序约束(五)衍生时钟约束与I/O接口约束

系列文章目录 FPGA时序约束&#xff08;一&#xff09;基本概念入门及简单语法 FPGA时序约束&#xff08;二&#xff09;利用Quartus18对Altera进行时序约束 FPGA时序约束&#xff08;三&#xff09;时序约束基本路径的深入分析 FPGA时序约束&#xff08;四&#xff09;主时…

2023五一建模A题完整版本【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 本文研究了喷气式无人机在执行空中物资投放和爆破任务过程中的数学建模问题。我们分析了无人机投放距离与飞行高度、飞行速度、空气阻力等因素之间的关系&…

【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

DynamicSqlSource 源码分析 一、DynamicSqlSource 源码分析&#x1f62f;DynamicContext源码分析&#x1f644;SqlNode源码分析&#xff08;动态SQL标签&#xff09;Mybatis 动态SQL标签举例、调试SqlNode源码分析MixedSqlNodeIfSqlNodeWhereSqlNode、SetSqlNode、TrimSqlNodeS…

区域医疗云his系统源码,具有可扩展、易共享、易协同的优势

云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景&#xff0c;并提升区域内应用的标准化与规范…

安装配置goaccess实现可视化并实时监控nginx的访问日志

一、业务需求 我们安装了nginx后,需要对nginx的访问情况进行监控(希望能够实时查看到访问nginx的情况),如下图所示: 二、goaccess的安装配置步骤 2.1、准备内容 需要先安装配置nginx或OpenResty - 安装 Linux环境对Nginx开源版源码下载、编译、安装、开机自启https://b…

从0开始利用Jenkins构建Maven项目(微服务)并自动发布

0. 前言 本文旨在帮助读者梳理如何从0开始利用Jenkins构建Maven项目&#xff08;微服务&#xff09;的自动发布任务 本文目录如下&#xff1a; 如何完成自动部署 0. 前言1. 配置工具类地址1.1 JDK1.2 Git1.3 Maven 2. 安装Jenkins3. 安装额外的工具插件4. 配置必要参数4.1 配…

TiDB实战篇-索引设计

简介 实战索引设计 数据映射原理 索引 唯一索引 二级索引 索引实例 索引设计 索引创建&#xff08;建表的时候创建&#xff09; 建表完以后添加 联合索引&#xff08;最左原则&#xff0c;索引覆盖&#xff09; 使用例子 索引覆盖 表达式索引 表达式索引的使用 不可见…

【youcans 的 OpenCV 学习课】23. 人脸检测:Haar 级联检测器

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】23. 人脸检测&#xff1a;Haar 级联检测器 4. Haar 级联分类器5. Haar 人脸/人眼检测器5.1 OpenCV 中的级联分类器5.2 Haar 级联检…

OPNET Modeler 调试简介

在使用 OPNET Modeler 软件运行仿真时&#xff0c;经常会遇到错误&#xff0c;发现和定位错误所在的地方是解决错误的第一步&#xff0c;那么怎么定位错误呢&#xff0c;这个时候就需要采用仿真调试器 (OPNET Simulation Debugger&#xff0c;ODB)进行调试了。 在 OPNET 中&…

【模电实验】电路元件伏安特性的测绘及电源外特性的测量

实验2电路元件伏安特性的测绘及电源外特性的测量 实验目的 学习测量线性和非线性电阻元件伏安特性的方法&#xff0c;并绘制其特性曲线学习测量电源外特性的方法掌握运用伏安法判定电阻元件类型的方法学习使用直流电压表、电流表&#xff0c;掌握电压、电流的测量方法 实验原…

Java BIO(Blocking IO:同步并阻塞式IO)

1.基本介绍 1>.Java BIO就是传统的java io编程,其相关的类和接口在"java.io"包下; 2>.BIO(Blocking I/O): 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理; 如果这个连接不做任何事情会造成(服务器)不必…