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());  
            }  
        }  
    }  
}
相关推荐
八解毒剂13 分钟前
【计组】中央处理器CPU
java·开发语言·计算机组成原理
FakeOccupational1 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
打工仔折腾 AI1 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger1 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
weixin_440730503 小时前
函数return、参数、参数组、递归函数、高阶函数等小结
开发语言·python
sugarzhangnotes3 小时前
【无标题】
开发语言·人工智能·python
geovindu3 小时前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式
xcyxiner4 小时前
DicomViewer24 修复编译bug(window test 失败)
前端·qt
周杰偷奶茶5 小时前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
橙子圆1235 小时前
JUC之集合类不安全
java·开发语言