(Qt)day4

(Qt)day4_第1张图片

 widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include        //定时器类头文件
#include         //时间类的头文件
#include   //定时器事件处理类
#include     //日期时间内
#include 

namespace Ui {
class widget;
}

class widget : public QMainWindow
{
    Q_OBJECT

public:
    explicit widget(QWidget *parent = nullptr);
    ~widget();

    //声明一个定时器事件
    void timerEvent(QTimerEvent *e)override;


private slots:
    void on_sb1_clicked();      //启动按钮

    void on_sb2_clicked();      //取消按钮

private:
    Ui::widget *ui;

    int tid;                    //定义一个定时器

    QTextToSpeech *speech1;     //定义一个播报者指针
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

widget::widget(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::widget)
{
    ui->setupUi(this);
    //定义一个语音播报者
    speech1 = new QTextToSpeech(this);
    //显示时间居中
    ui->timeLab->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);

}

widget::~widget()
{
    delete ui;

}

//启动
void widget::on_sb1_clicked()
{
    //判断是否设置了闹钟时间
    if(ui->timeEdit->text().size() != 0)
    {
        //设置一个定时器
        tid = this->startTimer(1000);
        //点击启动后,按钮变色
        ui->sb1->setStyleSheet("background-color: rgb(85, 170, 0);");
    }
    else
    {
        //定义信息弹窗
        QMessageBox box(
                    QMessageBox::Warning,
                    "警告",
                    "未设置时间!",
                    QMessageBox::Ok,
                    this);
        box.exec();                    //启用信息弹窗
    }
}

//定时器事件处理函数
void widget::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == tid)
    {
        QDateTime sys_time = QDateTime::currentDateTime();          //获取系统时间
        QString time = sys_time.toString("yyyy MM dd hh:mm:ss");    //将时间进行转换
        ui->timeLab->setText(time);                                 //将时间显示在lab上
        if(time == ui->timeEdit->text())                            //达到指定时间,语音播报预先设置内容
        {
            speech1->say(ui->textEdit->toPlainText());
        }

    }
}

//取消
void widget::on_sb2_clicked()
{
    QMessageBox box(
                QMessageBox::Warning,
                "警告",
                "是否确认取消?",
                QMessageBox::Yes|QMessageBox::No,
                this);
    int ret = box.exec();
    if(ret == QMessageBox::Yes)
    {
        this->killTimer(tid);       //关闭定时器
        ui->timeLab->clear();       //清除自己设置的定时信息
        ui->timeEdit->clear();      //清除时间显示
        ui->sb1->setStyleSheet("background-color: rgb(255, 255, 255);");    //修改启动按钮颜色
    }
}

(Qt)day4_第2张图片

 

你可能感兴趣的:(qt,开发语言)