欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 使用C++编写一个语音播报时钟(Qt)

使用C++编写一个语音播报时钟(Qt)

2024/10/24 23:22:18 来源:https://blog.csdn.net/sjrhsk_hahaha/article/details/142108962  浏览:    关键词:使用C++编写一个语音播报时钟(Qt)

要求:当系统时间达到输入的时间时,语音播报对话框中的内容。定时可以取消。qt界面如上图所示。组件如下:
countdownEdit作为书写目标时间的line_edit
start_btn作为开始和停止的按钮
stop_btn作为取消的按钮
systimelab显示系统时间的lab
textEdit显示播报内容

代码:头文件:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimer>            //定时器类
#include<QTime>            //时间类
#include<QTimerEvent>       //定时器事件类
#include<QDateTime>         //日期时间类
#include <QtTextToSpeech>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_stop_btn_clicked();void on_start_btn_clicked();void sys_time_slot();private:Ui::Widget *ui;//定义一个定时器变量QTimer t1;int tid = 0;        //定时器id号//void timerEvent(QTimerEvent *event) override;//定时器事件处理函数的声明QTextToSpeech *textToSpeech;};
#endif // WIDGET_H

程序文件:
 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), textToSpeech(new QTextToSpeech(this))
{ui->setupUi(this);// 由于定时器事件的信号与槽的绑定只需要一次,所以直接写在构造函数中即可connect(&t1, &QTimer::timeout, this, &Widget::sys_time_slot);
}Widget::~Widget()
{delete ui;
}void Widget::on_start_btn_clicked()
{if (ui->start_btn->text() == "启动"){t1.start(1000); // 每隔指定的时间,发送一个systime的信号ui->start_btn->setText("停止");}else{t1.stop();ui->start_btn->setText("启动");}
}void Widget::sys_time_slot()
{// 获取系统的时间QTime sysTime = QTime::currentTime();// 将QTime类对象转变成字符串QString tm = sysTime.toString("hh:mm:ss");// 将时间展示到ui界面上ui->systimelab->setText(tm);// 设置标签居中显示ui->systimelab->setAlignment(Qt::AlignCenter);// 比较系统时间和用户输入的时间if (tm == ui->countdownEdit->text()){ui->textEdit->append("三更灯火五更鸡,\n正是男儿读书时,\n黑发不知勤学早,\n白首方悔读书迟。");// 语音播报textToSpeech->say(ui->textEdit->toPlainText());}
}void Widget::on_stop_btn_clicked()
{ui->start_btn->setText("启动");ui->countdownEdit->setText("00:00:00"); // 清除显示
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com