闹钟的实现
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFont>
#include <QTextToSpeech> //语音播报类
#include <QTimerEvent> //时间事件类
#include <QTime> //时间类
#include <QTimer> //定时器类
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();
void on_stopbtn_clicked();
private:
Ui::Widget *ui;
//定义一个语音播报者
QTextToSpeech *speecher;
//定义一个定时器的id
int t1;
QTime t;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//设置时间居中显示
ui->clockEdit->setFont(QFont("宋体", 50, 30, false));
//给语音播报申请空间
speecher = new QTextToSpeech(this);
ui->label->setText("起床啦");
ui->label->setAlignment(Qt::AlignCenter);
ui->label->setFont(QFont("宋体", 50, 30, false));
}
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId() == t1)
{
//显示的系统时间
//获取当前系统timelab1时间
t = QTime::currentTime();
ui->timelab1->setText(t.toString("hh:mm:ss"));
//设置时间居中显示
ui->timelab1->setAlignment(Qt::AlignCenter);
ui->timelab1->setFont(QFont("宋体", 50, 30, false));
}
//闹铃
if(t.toString("hh:mm:ss") == ui->clockEdit->text())
{
int i = 0;
while(i < 60)
{
speecher->say(ui->label->text());
i++;
}
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_startbtn_clicked()
{
//按下启动一个定时器
t1 = startTimer(1000);
}
void Widget::on_stopbtn_clicked()
{
speecher->stop();
}