1.
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimerEvent> //定时器事件类
#include<QTimer>//时间事件类
#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_startBtn_clicked(); //自定义启动按钮槽函数
private:
Ui::Widget *ui;
int tId;//定义时间器ID
QTextToSpeech* speecher; // 用QTextToSpeech实例化一个speecher对象
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
tId=startTimer(1000);//当1秒钟时间超时时,自动走timerEvent()
speecher = new QTextToSpeech(this); // 给speecher初始化和申请空间
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *e)//重写定时器事件函数的实现
{
if(e->timerId()==tId)//判断是哪个定时器
{
//获取系统时间
QTime sys_time =QTime::currentTime();
//将系统时间转换成字符串
QString t=sys_time.toString("hh:mm:ss");
//将系统时间放入lab中
ui->localtimeLab->setText(t);
//将系统时间放入lab中
ui->localtimeLab->setAlignment(Qt::AlignCenter);
if(ui->showtimeLab->text()==t)//判显示的闹钟时间断标签里的时间是否和系统时间相等
{
for(int i=0;i<5;i++)
{
speecher->say(ui->contentLab->text());//把内容lab中的文字转换成语音,循环播报5次
}
}
}
}
void Widget::on_startBtn_clicked()
{
// speecher->say("原神,启动!");
ui->showtimeLab->setText(ui->LineEdit->text());//将文本编辑器的内容输入到显示闹钟时间的标签上
ui->showtimeLab->setAlignment(Qt::AlignCenter);// 文字居中显示
ui->LineEdit->setText("");// 清空输入框
}