实现一个闹钟
.h头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimerEvent>//定时器事件类
#include<QDebug>
#include<QTime>
#include<QtTextToSpeech>
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_start_btn_clicked();
private:
Ui::Widget *ui;
int id;//获取系统时间
int id2;//闹钟时间
QTextToSpeech *p2;//语音播报
};
#endif // WIDGET_H
.cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
,p2(new QTextToSpeech(this))
{
ui->setupUi(this);
id=startTimer(1000);
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *e)
{
if(e->timerId()==id)
{
QTime sys_time=QTime::currentTime();
QString t=sys_time.toString("hh--mm--ss");
ui->label->setText(t);
ui->label->setAlignment(Qt::AlignCenter);
}
else if(e->timerId()==id2)
{
static int num=0;
QString t="该吃饭了";
ui->title_label->setText(t);
p2->say(ui->title_label->text());
num++;
if(num==4)
{killTimer(id2);}
}
}
void Widget::on_start_btn_clicked()
{
QString time=ui->lineEdit->text();
int t=time.toInt();
id2=startTimer(t*1000);
}