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

QT设置闹钟超时播报

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTimerEvent>
#include<QTime>
#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);


private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    int id;
    int id1;
    QTextToSpeech *speecher;
};
#endif // WIDGET_H

测试文件

#include "widget.h"    
#include "ui_widget.h"  
   
Widget::Widget(QWidget *parent)  
    : QWidget(parent) // 调用基类的构造函数,设置父对象  
    , ui(new Ui::Widget) // 实例化UI对象  
    , speecher(new QTextToSpeech(this)) // 实例化QTextToSpeech对象,并设置当前Widget为父对象  
{  
    ui->setupUi(this); / 
    id = startTimer(1000); // 启动一个定时器,每隔1000毫秒(1秒)触发一次timerEvent  
  
    // 设置lineEdit的样式  
    ui->lineEdit->setStyleSheet("background-color: rgba(255, 255, 255, 150); border: 1px solid gray; border-radius: 5px;");  
}  
    
Widget::~Widget()  
{  
    delete ui;   
}  
  
// 当pushButton被点击时调用的槽函数  
void Widget::on_pushButton_clicked()  
{  
    id1 = startTimer(1000); // 启动另一个定时器,与id不同,用于不同的定时任务  
}  
  
// 重写QWidget的timerEvent函数,处理定时器事件  
void Widget::timerEvent(QTimerEvent *e)  
{  
    // 检查是哪个定时器触发了事件  
    if(e->timerId()==id)  
    {  
        QTime sys_time=QTime::currentTime(); // 获取当前系统时间  
        QString t=sys_time.toString("hh--mm--ss"); // 将时间格式化为字符串  
        ui->label->setText(t); // 将时间字符串设置到label上  
    }  
    else if(e->timerId() == id1)  
    {  
        // 检查lineEdit中的文本是否与label中的文本相同  
        if(ui->lineEdit->text() == ui->label->text())  
        {  
            // 如果相同,则使用QTextToSpeech播放label_3中的文本5次  
            for(int i=0; i<5;i++)  
            {  
                speecher->say(ui->label_3->text());  
            }  
        }  
    }  
}


http://www.kler.cn/a/299874.html

相关文章:

  • vue3+elementPlus之后台管理系统(从0到1)(day4-完结)
  • leetcode_链表 876.链表的中间节点
  • Android Studio:视图绑定的岁月变迁(2/100)
  • 为AI聊天工具添加一个知识系统 之69 详细设计 之10 三种中台和时间度量 之2
  • SpringBoot3+Vue3开发学生选课管理系统
  • 2024年AI多极竞争:技术创新与商业突破
  • B站宋红康JAVA基础视频教程之Chapter13(泛型)
  • Inspector里面可以编辑的变量相关
  • C#使用handle实现获取占用指定文件或文件夹的进程(Locksmith功能)
  • Linux编译器-gcc/g++使用
  • java后端如何发送httpGET和POST请求
  • .NET 一款用于解密web.config配置的工具
  • 11.5.软件系统分析与设计-面向对象的程序设计与实现
  • 【贪心算法】(一)贪心算法理论及基础习题
  • Redis:发布(pub)与订阅(sub)实战
  • HBase 源码阅读(四)HBase 关于LSM Tree的实现- MemStore
  • 视频怎么转换成mp3格式?分享5种便捷的转换方法
  • Ef 在迁移过程中 遇到 The migration ‘xxxx‘ was not found. 的问题(未解决)
  • JAVAEE初阶第七节(下)——物理原理与TCP_IP
  • 代码随想录训练营day44|1143.最长公共子序列,1035.不相交的线, 53. 最大子序和,392.判断子序列
  • TinyWebserver的复现与改进(7):日志系统
  • 25 考研数学大纲有什么变化?
  • 果蔬识别系统性能优化之路(一)
  • 【LeetCode:3174】清除数字(Java)
  • 《JavaEE进阶》----15.<Spring Boot 日志>
  • Day 31: 贪心算法基础 V