#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer> //定时器类
#include <QTime> //时间类
#include <QTimerEvent> //定时器时间类
#include <QTextToSpeech> //语音播报类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
void timerEvent(QTimerEvent *event)override; //重写定时器处理事件函数
signals:
void my_signal();
private slots:
void on_startbtn_clicked();
void on_closebtn_clicked();
void my_slot();
private:
Ui::Widget *ui;
//使用定时器类,定义一个定时器指针
QTimer *timer;
//定义整型变量,记录启动的定时器
int event_timer;
int time;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->lineEdit->setPlaceholderText("请设置时间"); //设置占位文本
//连接自定义信号和自定义槽函数
connect(ui->startbtn,SIGNAL(my_signal()),this,SLOT(my_slot()));
}
Widget::~Widget()
{
delete ui;
}
/***********************************************************/
/***********************************************************/
//开始按钮 startbtn
void Widget::on_startbtn_clicked()
{
//指定启动功能
event_timer = this->startTimer(1000); //启动一个定时器,每隔1秒后自动调用定时器时间处理函数
if(ui->label->text()==ui->lineEdit->text())
{
emit my_signal(); //发射自定义信号
}
}
//重写的定时器时间处理函数的定义
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId()==event_timer)
{
QTime t = QTime::currentTime(); //获取系统时间
//将日期时间转换为字符串
QString t1 = t.toString("hh:mm:ss"); //将系统时间转换为字符串
//将时间展示到ui界面
ui->label->setText(t1);
}
}
//关闭按钮 closebtn
void Widget::on_closebtn_clicked()
{
//执行关闭功能
this->killTimer(event_timer); //关闭定时器
}
//文本框textedit。语音读其中的内容
//void Widget::on_textEdit_copyAvailable(bool b)
//{
// QString str=ui->textEdit->toPlainText();
//}
//语音播报text内容
void Widget::my_slot() //自定义槽函数
{
//qDebug()<<"hello world";
//QTextToSpeech speech; //实例化一个播报员
QTextToSpeech speech;//实例化一个播报员
speech.say(ui->textEdit->toPlainText());//播报按钮2上的内容
}