QT_day4

闹钟

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include   //时间事件  类
#include   //时间  类
#include   //定时器  类
#include    //语音播报 类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void timerEvent(QTimerEvent *e);  //重写时间事件 函数声明

private slots:
    //启动按钮对应的槽函数
    void on_startBtn_clicked();

    //停止按钮对应的槽函数
    void on_stopBtn_clicked();

private:
    Ui::Widget *ui;

    //定义一个定时器的id
    int tid;

    //定义一个语音播报者
    QTextToSpeech *speecher;

};
#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);

    //给语音播报者实例化一个空间
    speecher = new QTextToSpeech(this);

    //启动一个定时器
    tid = startTimer(1000);

    //居中显示
    ui->voicelab->setAlignment(Qt::AlignCenter);
    ui->alarmlab->setAlignment(Qt::AlignCenter);



}

Widget::~Widget()
{
    delete ui;
}

//时间事件的函数
void Widget::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == tid)
    {
        //获取当前系统时间
        QTime sys_time = QTime::currentTime();

        //把系统时间转换成字符串
        QString s = sys_time.toString("hh::mm::ss");

        //将系统时间放入标签中
        ui->timelab->setText(s);

        //居中显示
        ui->timelab->setAlignment(Qt::AlignCenter);

    }

}

//启动按钮对应的槽函数
void Widget::on_startBtn_clicked()
{
    //设置定时时间
    ui->alarmlab->setText("10:00:00");
    
    //语音播报
    for(int i=0; i<3; i++)
    {
        speecher->say(ui->voicelab->text());
    }
}

//停止按钮对应的槽函数
void Widget::on_stopBtn_clicked()
{
    speecher->stop();
}

你可能感兴趣的:(qt)