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());  
            }  
        }  
    }  
}
相关推荐
郝学胜-神的一滴22 分钟前
【技术实战】500G单行大文件读取难题破解!生成器+自定义函数最优方案解析
开发语言·python·程序人生·面试
愤豆26 分钟前
02-Java语言核心-语法特性-注解体系详解
java·开发语言·python
是翔仔呐41 分钟前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
2401_878530211 小时前
自定义内存布局控制
开发语言·c++·算法
wjs20241 小时前
SQLite 子查询
开发语言
AndrewMe82111 小时前
detailed-docx:一个能保住格式的 Word 文档操作库
开发语言·python·word
IT方大同1 小时前
RT_thread(RTOS实时操作系统)线程的创建与切换
c语言·开发语言·嵌入式硬件
智算菩萨1 小时前
【OpenGL】6 真实感光照渲染实战:Phong模型、材质系统与PBR基础
开发语言·python·游戏引擎·游戏程序·pygame·材质·opengl
jinanwuhuaguo1 小时前
OpenClaw深度沟通渠道-全景深度解构
大数据·开发语言·人工智能·openclaw
是翔仔呐1 小时前
第14章 CAN总线通信全解:底层原理、帧结构与双机CAN通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee