widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QDebug>
#include <QMainWindow>
#include <QMessageBox>
#include <QTimer> //定时器类头文件
#include <QTime> //时间类的头文件
#include <QTimerEvent> //定时器事件处理类
#include <QDateTime> //日期时间内
#include <QTextToSpeech>
namespace Ui {
class widget;
}
class widget : public QMainWindow
{
Q_OBJECT
public:
explicit widget(QWidget *parent = nullptr);
~widget();
//声明一个定时器事件
void timerEvent(QTimerEvent *e)override;
private slots:
void on_sb1_clicked(); //启动按钮
void on_sb2_clicked(); //取消按钮
private:
Ui::widget *ui;
int tid; //定义一个定时器
QTextToSpeech *speech1; //定义一个播报者指针
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
widget::widget(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::widget)
{
ui->setupUi(this);
//定义一个语音播报者
speech1 = new QTextToSpeech(this);
//显示时间居中
ui->timeLab->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
}
widget::~widget()
{
delete ui;
}
//启动
void widget::on_sb1_clicked()
{
//判断是否设置了闹钟时间
if(ui->timeEdit->text().size() != 0)
{
//设置一个定时器
tid = this->startTimer(1000);
//点击启动后,按钮变色
ui->sb1->setStyleSheet("background-color: rgb(85, 170, 0);");
}
else
{
//定义信息弹窗
QMessageBox box(
QMessageBox::Warning,
"警告",
"未设置时间!",
QMessageBox::Ok,
this);
box.exec(); //启用信息弹窗
}
}
//定时器事件处理函数
void widget::timerEvent(QTimerEvent *e)
{
if(e->timerId() == tid)
{
QDateTime sys_time = QDateTime::currentDateTime(); //获取系统时间
QString time = sys_time.toString("yyyy MM dd hh:mm:ss"); //将时间进行转换
ui->timeLab->setText(time); //将时间显示在lab上
if(time == ui->timeEdit->text()) //达到指定时间,语音播报预先设置内容
{
speech1->say(ui->textEdit->toPlainText());
}
}
}
//取消
void widget::on_sb2_clicked()
{
QMessageBox box(
QMessageBox::Warning,
"警告",
"是否确认取消?",
QMessageBox::Yes|QMessageBox::No,
this);
int ret = box.exec();
if(ret == QMessageBox::Yes)
{
this->killTimer(tid); //关闭定时器
ui->timeLab->clear(); //清除自己设置的定时信息
ui->timeEdit->clear(); //清除时间显示
ui->sb1->setStyleSheet("background-color: rgb(255, 255, 255);"); //修改启动按钮颜色
}
}