7.27作业

该代码实现了一个基于Qt的Widget类,包含启动和停止按钮,用于显示时间并进行语音播报。当时间与用户设定的闹钟时间匹配时,程序将连续朗读文本编辑框中的内容。
摘要由CSDN通过智能技术生成
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QTextToSpeech>
#include <QDebug>
 
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void timerEvent(QTimerEvent *e);
 
 
private slots:
 
    void on_eventStartBtn_clicked();
    void on_eventstopBtn_clicked();
 
private:
    Ui::Widget *ui;
    int tId;
    QTextToSpeech *speecher;
 
};
#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    speecher = new QTextToSpeech(this);
}
 
Widget::~Widget()
{
    delete ui;
}
 
 
 
 
 
void Widget::on_eventStartBtn_clicked()
{
    if(ui->eventStartBtn->text() == "启动")
    {   //启动一个定时器
        tId = startTimer(1000);  //启动一个定时器,每隔1000毫秒会显示时间
        ui->eventStartBtn->setEnabled(false);
        ui->eventstopBtn->setEnabled(true);
    }
}
void Widget::timerEvent(QTimerEvent *e)
{   if(e->timerId() == tId)
   {
     //static int num = 0;
     //ui->timeLab->setNum(++num);
        //获取系统时间
        QTime sys_time = QTime::currentTime();
        QString alarmTime;
        alarmTime = ui->lineEdit->text();
 
        QString t =sys_time.toString("hh-mm-ss");
 
        ui->timeLab->setText(t);
        ui->timeLab->setAlignment(Qt::AlignCenter);
        if(t == alarmTime)
        {
            while(1)
            {
                speecher->say(ui->textEdit->toPlainText());
            }
        }
   }
 
 
}
 
void Widget::on_eventstopBtn_clicked()
{
   if(ui->eventstopBtn->text() == "停止")
       {
       this->killTimer(tId);
       ui->eventstopBtn->setEnabled(false);
       ui->eventStartBtn->setEnabled(true);
       }
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值