- 作业:
cpp
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_NAMESPACE
class MyWidget : public QWidget
{
Q_OBJECT
public:
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);
}
- 思维导图