1. 作业:
xx.h 文件#ifndef MYWIDGET_H
#define MYWIDGET_H#include <QWidget>
#include <QDate>
#include <QTime>
#include <QTimerEvent>
#include <QMessageBox>
#include <QDebug>
#include <QTextToSpeech>QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACEclass MyWidget : public QWidget
{Q_OBJECTpublic:MyWidget(QWidget *parent = nullptr);~MyWidget();//重写定时器事件void timerEvent(QTimerEvent *event);private slots:void on_pushButton_clicked();private:Ui::MyWidget *ui;int id;int id2;QString time;QString time2;//创建一个语言播报者QTextToSpeech *speecher;
};
#endif // MYWIDGET_H#主程序#include "mywidget.h"
#include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白部分this->setAttribute(Qt::WA_TranslucentBackground);//启动定时器id = startTimer(1000);//给语音播报者实例化空间speecher = new QTextToSpeech(this);
}MyWidget::~MyWidget()
{delete ui;killTimer(id);killTimer(id2);
}void MyWidget::timerEvent(QTimerEvent *event)
{//判断定时器类型if(event->timerId() == id){QDate date = QDate::currentDate();//得到当前时间QString str1 = date.toString("yyyy-MM-dd");QTime time = QTime::currentTime();QString str = time.toString("HH:mm:ss");time2 = str1+" "+str;ui->timeLabel->setText(time2);ui->timeLabel->setAlignment(Qt::AlignCenter);}else if(event->timerId() == id2){//时间一致,进行播报if(time == time2){for(int i=0;i<5;i++){speecher->say(ui->messageLabel->text());_sleep(200);}}}
}//设置闹钟时间
void MyWidget::on_pushButton_clicked()
{QString str = ui->timeEdit->text();if(str == NULL){QMessageBox::information(this,"提示","时间框不能为空");}time = str;qDebug() << time;//启动定时器id2 = startTimer(1000);
}
2. 思维导图