1. 完成闹钟的实现:
widgt.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QTimerEvent> //定时器事件处理函数
#include <QTime> //时间类
#include <QTextToSpeech> //文本转语音类头文件QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timerEvent(QTimerEvent *e); //重写关于定时器事件处理函数的声明private slots:void on_eventStartBtn_clicked();void on_stopBtn_clicked();private:Ui::Widget *ui;QString t1;int tid1 = startTimer(500);int tid2;//定义闹钟事件处理的定时器idQTextToSpeech *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);
// QColor c = QColorDialog::getColor(QColor(0,255,255), //初始颜色
// this, //父组件
// "选择颜色"); //窗口标题
// ui->textEdit->setTextColor(c); //设置字体颜色,前景色ui->edit->setTextColor(QColor(66,90,240));ui->edit->setFont(QFont("隶书",15,10,false));
}Widget::~Widget()
{delete ui;
}void Widget::on_eventStartBtn_clicked() //"启动"按钮
{//启动一个定时器tid2 = startTimer(1000); //每隔1000ms会自动执行timerEvent函数
}void Widget::on_stopBtn_clicked() //"停止" 按钮
{ui->clockEdit->clear(); //清空闹钟时间ui->edit->clear(); //清空提示内容this->killTimer(tid2); //关闭闹钟定时器
}//定时器事件处理函数的定义
void Widget::timerEvent(QTimerEvent *e)
{if(e->timerId() == tid1) //系统时间定时器,1s刷新{//设置系统时间QTime sys_time = QTime::currentTime(); //QTime类对象t1 = sys_time.toString("hh:mm:ss"); //将时间转换成字符串//将字符串展示到ui界面ui->sysTimeLab->setText(t1);ui->sysTimeLab->setFont(QFont("隶书",15,10,false));ui->sysTimeLab->setAlignment(Qt::AlignCenter); //居中显示}if(e->timerId() == tid2) //闹钟定时器{//从ui界面上的读取下来QString t2 = ui->clockEdit->text();if(t2 == t1 ){ui->edit->setText("三更灯火五更鸡,""正是男儿读书时,""黑发不知勤学早,""白首方悔读书少");speecher->say(t2);speecher->say(ui->edit->toPlainText());}}
}
2. 思维导图