widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimer>//定时器类
#include<QTime> //时间类(用来获取时间)
#include<QTimerEvent>//定时器事件类
#include<QTextToSpeech>
#include<cstring>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();//启动按钮
void updateClock(); // 更新时钟的槽函数
void on_pushButton_2_clicked();//关闭按钮
//void timerEvent(QTimerEvent *event)override;//重写定时器事件处理函数
private:
Ui::Widget *ui;
//使用定时器类,定义一个闹钟
QTimer *timer;
//语音播报
QTextToSpeech * my_speech;
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 创建定时器对象并启动
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateClock()));
timer->start(1000); // 每隔1秒更新一次
// 创建文本转语音对象
my_speech= new QTextToSpeech(this);
// 连接按钮的信号和槽函数
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2_clicked()));
// 创建定时器并连接到更新时钟的槽函数
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &Widget::updateClock);
//设定定时器的时间间隔为1s并启动它
timer->start(1000);
}
Widget::~Widget()
{
delete ui;
}
//启动按钮对应的槽函数
void Widget::on_pushButton_clicked()
{
//启动定时器
ui->pushButton_2->setEnabled(true);
ui->pushButton->setEnabled(false);
timer->start(1000);
}
// 更新时钟的槽函数
void Widget::updateClock()
{
//获取当前时间,并且显示在标签上
QTime time=QTime::currentTime();
QString timeStr=time.toString("hh:mm:ss");
ui->label->setText(timeStr);
if(timeStr==ui->lineEdit->text())
{
qDebug()<<"sadadaw";
}
}
//关闭按钮对应的槽函数
void Widget::on_pushButton_2_clicked()
{
//停止定时器
timer->stop();
ui->pushButton_2->setEnabled(false);
ui->pushButton->setEnabled(true);
}