widget.cpp:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("定时器");
timer=new QTimer;
connect(timer,&QTimer::timeout,this,&Widget::on_time_timeout); //把timeout信号与槽函数连接
timer->start(1000); //开启定时器
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_time_timeout()
{
QTime qtime=QTime::currentTime(); //获取系统时间
QString time=qtime.toString(); //转换为QString类型
ui->time->setText(time); //显示在labal
}
void Widget::on_btn1_clicked() //启动定时
{
timerId = startTimer(1000);
ui->btn1->setText("success");
ui->lineEdit->setEnabled(false); //定时成功,定时时间和打字框不能修改
ui->textEdit->setEnabled(false);
}
void Widget::on_btn2_clicked() //关闭定时
{
QMessageBox box(QMessageBox::Warning ,"警告","您是否确认取消定时",QMessageBox::Yes|QMessageBox::No);
int res = box.exec();
if(res==QMessageBox::Yes)
{
killTimer(timerId);
ui->btn1->setText("start");
ui->lineEdit->setEnabled(true); //取消定时成功,定时时间和打字框可以修改
ui->textEdit->setEnabled(true);
}
}
void Widget::timerEvent(QTimerEvent *event)
{
QString time_d=ui->lineEdit->text(); //获取定时时间
QString time_now=ui->time->text(); //获取当前时间
QTextToSpeech *speech = new QTextToSpeech(this); //实例化一个语音播报者
if(time_d==time_now) //如果时间到达定时时间将输入框中的文本信息读出来
{
//获取按钮文本
QString text = ui->textEdit->toPlainText();
speech->say(text); //将给定的字符串读出来
}
}