实现定时器
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//创建tts对象
tts=new QTextToSpeech(this);
//语言环境
tts->setLocale(QLocale::Chinese);
//启动显示系统时间的定时器,间隔时间为100ms
sysTid =this->startTimer(100);
//设置关闭按钮不可用
ui->pushButton_2->setEnabled(false);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
//启动前 可更改时间 文本内容 关闭按钮不可用
//启动后 启动不可用 更改时间不可用 文本内容不可编辑 关闭按钮可用
ui->pushButton->setEnabled(false);//设置启动按钮不可用
ui->lineEdit->setEnabled(false);//禁用设定时间
ui->textEdit->setEnabled(false);//禁用文本编辑
ui->pushButton_2->setEnabled(true);//设置关闭按钮可用
alarTid =this->startTimer(100);//启动定时定时器
}
void Widget::on_pushButton_2_clicked()
{
//关闭按钮点击后 可更改时间 文本内容 关闭按钮不可用
ui->pushButton->setEnabled(true);//设置启动按钮不可用
ui->lineEdit->setEnabled(true);//禁用设定时间
ui->textEdit->setEnabled(true);//禁用文本编辑
ui->pushButton_2->setEnabled(false);//设置关闭按钮可用
this->killTimer(alarTid); //关闭alartid定时器
}
//定时器事件处理函数
void Widget::timerEvent(QTimerEvent *e)
{
if(e->timerId()==sysTid)
{
//显示时间
showtime();
}else if (e->timerId()==alarTid) {
//如果label中的时间字符串与lineEdit中的字符串一致,则读取文本内容
if(ui->label->text()==ui->lineEdit->text())
{
qDebug()<<ui->textEdit->toPlainText();
//将文字转为语音
tts->say(ui->textEdit->toPlainText());
}
}
}
//将系统时间显示在label中
//需要借助定时器不断刷新
void Widget::showtime()
{
//获取系统当前日期的时间
QDateTime sys_time =QDateTime::currentDateTime();
//将时间显示到label
ui->label->setText(sys_time.toString("yyyy MM dd hh:mm:ss"));
}
//widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
#include <QTimer> //定时器类的头文件
#include <QTime> //时间类的头文件
#include <QTimerEvent> //定时器事件处理类
#include <QTextToSpeech> //文字转语音头文件
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
//声明定时器事件处理
void timerEvent(QTimerEvent *e)override;
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Widget *ui;
void showtime();
//定义一个刷新系统时间定时器的标识
int sysTid;
//定义定时定时器
int alarTid;
//文字转语音
QTextToSpeech *tts;
void textToSpeech();
};
#endif // WIDGET_H