.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
#include <QTimer> //定时器类
#include <QTime> //时间类
#include <QTimerEvent> //定时器事件类
#include <QDateTime> //日期类
#include <QTextToSpeech> //语音类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
void timerEvent(QTimerEvent *event)override;
void speechEvent(int flag);
private slots:
void on_startBtn_clicked();
void on_closeBtn_clicked();
private:
Ui::Widget *ui;
//使用定时器类,定义一个定时器指针
QTimer *timer;
//定义整型变量,记录启动的定时器
int event_timer;
//定义语音指针
QTextToSpeech *speech;
QString get_time;
QString text;
QString _time = "";
int flag = -1;
};
#endif // WIDGET_H
.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("【析木】");
this->setStyleSheet("background-color:light blue;");
ui->startBtn->setStyleSheet("background-color:light gray;");
// ui->objLab->setStyleSheet("background-color:light gray;");
ui->closeBtn->setStyleSheet("background-color:light gray;");
// ui->eventLab->setStyleSheet("background-color:light gray;");
//给定时器指针实例化一个空间
timer = new QTimer(this);
//实例化一个播报员
speech = new QTextToSpeech(this);
// 设置TTS相关属性
speech->setLocale(QLocale::Chinese); // 设置语言为中文
speech->setVolume(1.0); // 设置音量为最大值
// speech->setRate(0.02); // 设置语速
event_timer = this->startTimer(1000);
ui->closeBtn->setEnabled(false);//初始关闭按钮置灰
ui->label->setAlignment(Qt::AlignCenter);
ui->lineEdit->setAlignment(Qt::AlignCenter);
//设置初始内容
ui->lineEdit->setPlaceholderText("格式>>> 08:00:00");
ui->textEdit->setPlaceholderText("请在此处输入要播报的文字");
}
Widget::~Widget()
{
delete ui;
}
//启动按钮
void Widget::on_startBtn_clicked()
{
//获取lineEdit内容
get_time = ui->lineEdit->text();
// qDebug() << get_time;
//获取QTextEdit文本内容
text = ui->textEdit->toPlainText();
// qDebug() << text;
ui->lineEdit->setEnabled(false);
ui->textEdit->setEnabled(false);
ui->startBtn->setEnabled(false);
ui->closeBtn->setEnabled(true);
}
//关闭按钮
void Widget::on_closeBtn_clicked()
{
speechEvent(0);
ui->lineEdit->clear();
ui->lineEdit->setEnabled(true);
ui->textEdit->setEnabled(true);
ui->startBtn->setEnabled(true);
ui->closeBtn->setEnabled(false);
}
//重写的定时器事件处理函数定义
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId() == event_timer)
{
QDateTime sys_dt = QDateTime::currentDateTime(); //获取系统日期
QString dt = sys_dt.toString("yyyy-MM-dd hh:mm:ss");
QString time = sys_dt.toString("hh:mm:ss");
// qDebug() << time;
ui->label->setText(dt);
//闹钟判断
if(time == get_time)
speechEvent(1);
}
}
void Widget::speechEvent(int flag)
{
if(1 == flag)
{
for(int i=0;i<5;i++) //循环播报五次
{
speech->say(" 滴滴 ");
speech->say(text);
}
}
if(0 == flag)
{
speech->say(" 关闭");
}
}