1.完成闹钟的实现,到点播报文本框的内容;
---alarm.h---头文件
#ifndef ALARM_H
#define ALARM_H#include <QWidget>
#include <QTimerEvent> //定时器处理函数类
#include <QTime> //时间类
#include <QPushButton> //按钮类
#include <QLineEdit> //行编辑类
#include <QLabel> //标签类
#include <QTextEdit> //文本编辑类
#include <QDebug> //输出信息类
#include <QTextToSpeech>QT_BEGIN_NAMESPACE
namespace Ui { class Alarm; }
QT_END_NAMESPACEclass Alarm : public QWidget
{Q_OBJECTpublic:Alarm(QWidget *parent = nullptr);~Alarm();QTextToSpeech *speechptr; //语音播报类指针void timerEvent(QTimerEvent *e); //要重写的的定时器事件处理函数的声明private slots:void on_startbtn_clicked();void on_stopbtn_clicked();private:Ui::Alarm *ui;//定义定时器int sysid; //系统时间int editid; //定时时间
};
#endif // ALARM_H
---alarm.cpp---函数实现文件
#include "alarm.h"
#include "ui_alarm.h"Alarm::Alarm(QWidget *parent): QWidget(parent), ui(new Ui::Alarm)
{ui->setupUi(this);//实例化一个播报员speechptr = new QTextToSpeech(this);ui->lineedit->setAlignment(Qt::AlignCenter); //文本居中对齐}Alarm::~Alarm()
{delete ui;
}//启动按钮事件
void Alarm::on_startbtn_clicked()
{if(ui->startbtn->text() == "启动"){//启动报警定时器和系统定时器sysid = startTimer(1000);editid = startTimer(1000);//设置不可使用:自身,行编辑,文本编辑ui->startbtn->setEnabled(false);ui->lineedit->setEnabled(false);ui->textedit->setEnabled(false);//设置可用停止按钮ui->stopbtn->setEnabled(true);}
}//停止按钮事件
void Alarm::on_stopbtn_clicked()
{if(ui->stopbtn->text() == "暂停"){//暂停报警this->killTimer(editid);//设置不可使用:自身ui->stopbtn->setEnabled(false);//设置可用:行编辑,文本编辑,启动按钮ui->startbtn->setEnabled(true);ui->lineedit->setEnabled(true);ui->textedit->setEnabled(true);}
}//定时器事件处理函数
void Alarm::timerEvent(QTimerEvent *e)
{//处理系统时间if(e->timerId() == sysid){QTime systime = QTime::currentTime();QString s_systime = systime.toString("hh : mm : ss"); //将获取的时间转为字符串ui->timelab->setText(s_systime); //时间写入标签ui->timelab->setAlignment(Qt::AlignCenter); //剧中对齐}else if(e->timerId() == editid){QString edittime = ui->lineedit->text(); //自定义时间QTime systime = QTime::currentTime(); //系统时间QString s_systime = systime.toString("hh : mm : ss"); //将获取的时间转为字符串if(s_systime == edittime){//实现语音播报文本框内容QString content = ui->textedit->toPlainText();speechptr->say(content);}}}
---main.cpp---测试文件
#include "alarm.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Alarm w;w.show();return a.exec();
}
点击启动按钮后---
点击暂停按钮后---
2.今日思维导图;