
闹钟
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer>  //定时器
#include <QTime>  //shijian
#include <QTimerEvent> //定时器事件类
#include <QDateTime> //日期实间类
#include <QTextToSpeech>  //语音播报
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    //播报指针
    QTextToSpeech *speech;
protected:
    void timerEvent(QTimerEvent *event)override;   //重写定时器事件处理函数
private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
private:
    Ui::Widget *ui;
    //使用定时器类定义一个定时器指针
    QTimer *timer;
    //定义整型变量,记录启动的定时器
    int time;
    //定义变量接时间
    QString dt; //系统时间
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //给播报申请空间
    speech = new QTextToSpeech(this);
    //执行启动定时器
    time = this->startTimer(1);
}
Widget::~Widget()
{
    delete ui;
}
//启动按钮
void Widget::on_pushButton_clicked()
{
    //语音播报
    //speech->say(ui->textEdit->toPlainText());
    //1.获取界面文本:toPlainText
    //设置组件是否可用
    ui->textEdit->setEnabled(false);
    ui->lineEdit->setEnabled(false);
}
//重写定时器事件处理函数的定义
void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == time)
    {
        //获取系统日期时间
        QDateTime sys_dt = QDateTime::currentDateTime();
        //将日期时间转换为字符串
        dt = sys_dt.toString("hh:mm:ss");
        //将时间展示到ui界面
        ui->label->setText(dt);
    }
    //对比时间
    if(ui->lineEdit->text() == dt)
    {
        speech->say(ui->textEdit->toPlainText());
    }
}
//关闭按钮
void Widget::on_pushButton_2_clicked()
{
    //执行关闭功能
    this->killTimer(time);
    //设置组件是否可用
    ui->textEdit->setEnabled(true);
    ui->lineEdit->setEnabled(true);
}


![【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】](https://img-blog.csdnimg.cn/be6bbacb0981451bb3f3eea12a48fec9.png)
















