【QTday4作业】

作业:实现闹钟定时功能,时间到达后播报文本编辑器内容。

代码实现:

my.h:

#ifndef MY_H
#define MY_H

#include <QWidget>
#include <QTimerEvent>  //定时器事件处理类
#include <QDateTime>
#include <QTextToSpeech>

namespace Ui {
class My;
}

class My : public QWidget
{
    Q_OBJECT

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

     void timerEvent(QTimerEvent *e)override;    //声明定时器事件处理函数

private slots:
    void on_startBtn_clicked();

    void on_closeBtn_clicked();

private:
    Ui::My *ui;
    QTextToSpeech *speecher;

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

};

#endif // MY_H

main.cpp:

#include "my.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    My w;
    w.show();

    return a.exec();
}

my.cpp:

#include "my.h"
#include "ui_my.h"

My::My(QWidget *parent) :QWidget(parent),ui(new Ui::My)
{
    ui->setupUi(this);

    //播报者
    speecher = new QTextToSpeech(this);

    //启动一个定时器
    tid =  this->startTimer(0);   //每隔0s调用timerEvent函数
}

My::~My()
{
    delete ui;
}

//处理点击启动按钮的槽函数
void My::on_startBtn_clicked()
{

    //将启动按钮禁用
    ui->startBtn->setEnabled(false);
    //将文本编辑器禁用
    ui->textEdit->setEnabled(false);
    //将关闭按钮开启
    ui->closeBtn->setEnabled(true);




}
//处理关闭启动按钮的槽函数
void My::on_closeBtn_clicked()
{
    //将关闭按钮禁用
    ui->closeBtn->setEnabled(false);
    //将启动按钮开启
    ui->startBtn->setEnabled(true);
    //将文本编辑器开启
    ui->textEdit->setEnabled(true);

}


void My::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == tid)
    {

        //获取系统当前的日期时间
        QDateTime sysTime = QDateTime::currentDateTime();

        //将事件展示到ui界面
        ui->timeLab->setText(sysTime.toString("yyyy-MM-dd-hh:mm:ss"));

        //设置lab内容居中显示
        ui->timeLab->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

        //判断闹钟设置时间是否与当前时间相等并且判断是否开启闹钟
        if(sysTime.time() == ui->clockEdit->time() && ui->startBtn->isEnabled() == false)
        {
             speecher->say(ui->textEdit->toPlainText());
        }

    }
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值