头文件.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QTimer>
#include <QTimerEvent>
#include <QTime>
#include <QLabel>
#include <QLineEdit>
#include <QFileDialog>
#include <QFontDialog>
#include <QTextEdit>
#include <QString>
#include <QObject>
#include <QDateTime>
#include <QTextToSpeech>
#include <QLineEdit>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void shoutime();
void bin1_open();
void bin2_close();
void timerEvent(QTimerEvent *e);
private:
QPushButton *bin1,*bin2;
QTimer *time1,*time2;
QTime syt_time;
QFont file;
QLabel *label,*label1;
QDateTime datetime1;
QTextToSpeech *speech;
QLineEdit* edit1,*edit;
int time_id;
};
#endif // WIDGET_H
源文件.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->setFixedSize(600,500);
bin1 = new QPushButton("启动",this);
bin2 = new QPushButton("取消",this);
bin1->resize(50,50);
bin2->resize(50,50);
bin1->move(400,100);
bin2->move(480,100);
speech = new QTextToSpeech(this);
file = QFont("宋体",12);
//文本
edit = new QLineEdit(this);
edit->resize(500,150);
edit->move(50,200);
edit->setFont(file);
//定时器
time1 = new QTimer(this);
time1->start(1000);
//定时的文本
edit1 = new QLineEdit(this);
edit1->resize(300,60);
edit1->move(400,20);
//信号与槽
connect(time1,&QTimer::timeout,this,&Widget::shoutime);
connect(bin1,&QPushButton::clicked,this,&Widget::bin1_open);
connect(bin2,&QPushButton::clicked,this,&Widget::bin2_close);
//时间文本
label = new QLabel(this);
label->move(50,100);
label->resize(250,50);
}
Widget::~Widget()
{
}
void Widget::timerEvent(QTimerEvent *e)
{
if(e->timerId() == time_id)
{
QString t = QTime::currentTime().toString("HH:mm:ss");
if(t == edit1->text())
speech->say(edit->text());
}
}
void Widget::shoutime()
{
//获取系统时间
datetime1 = QDateTime::currentDateTime();
QString t1 = datetime1.toString("yyyy-MM-dd hh::mm::ss AP");
t1 = datetime1.toString("yyyy-MM-dd hh:mm:ss AP");
label->setText(t1);
}
void Widget::bin1_open()
{
time_id = this->startTimer(1000);
bin1->setEnabled(false);
bin2->setEnabled(true);
}
void Widget::bin2_close()
{
speech->stop();
this->killTimer(time_id);
bin2->setEnabled(false);
bin1->setEnabled(true);
}