头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QDebug>
#include <QString>
#include <QTextToSpeech>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void timerEvent(QTimerEvent *e) override;
private slots:
void on_Start_clicked();
void on_Stop_clicked();
private:
Ui::Widget *ui;
int timer_id1;
int timer_id2;
QTextToSpeech* speecher;
signals:
void speek();
};
#endif
函数实现
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
speecher = new QTextToSpeech(this);
connect(this, &Widget::speek, [&](){
speecher->say(ui->textEdit->toPlainText());
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *e)
{
if( e->timerId() == timer_id1 )
{
QDate sys_d = QDate::currentDate();
QTime sys_t = QTime::currentTime();
QString t = sys_t.toString("hh:mm:ss");
QString d = sys_d.toString("yyyy-MM-dd");
ui->Time->setText(d);
ui->Date->setText(t);
}
if( e->timerId() == timer_id2 )
{
QTime clock_t = QTime::currentTime();
ui->Hour->setPlaceholderText("时");
ui->Min->setPlaceholderText("分");
ui->Sec->setPlaceholderText("秒");
QString hour = clock_t.toString("hh");
QString min = clock_t.toString("mm");
QString sec = clock_t.toString("ss");
if(hour == ui->Hour->text() && min == ui->Min->text() && sec == ui->Sec->text())
{
emit speek();
}
}
}
void Widget::on_Start_clicked()
{
timer_id1 = this->startTimer(1000);
timer_id2 = this->startTimer(1000);
}
void Widget::on_Stop_clicked()
{
this->killTimer(timer_id2);
}