9.3 电子时钟

该博客介绍了一个使用QT框架实现的电子时钟应用,具有定时播报功能。用户可以设定闹钟时间并输入播报文本,当到达设定时间时,应用会循环播报输入的文本内容。点击开始按钮启动闹钟和播报,而停止按钮则用于取消闹钟和播报。

电子时钟

UI界面

实现代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLCDNumber>
#include <QTime>
#include <QDebug>
#include <QTextToSpeech>

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 *);

private slots:
    void on_start_clicked();

    void on_stop_clicked();

private:
    Ui::Widget *ui;

    QLCDNumber *LCD;
    QLCDNumber *LCD2;

    int showflag=1;

    //定义一个播报者
    QTextToSpeech speech;

    int begin=0;

    QString strTxtEdt;


};
#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);
    this->setWindowTitle("电子时钟");
    ui->lcd1->setDigitCount(8);
    ui->lcd2->setDigitCount(8);
    QDateTime currentTime=QDateTime::currentDateTime();
    QString timeText = currentTime.toString("yy-MM-dd");
    ui->lcd1->display(timeText);

    startTimer(1000);
}

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


void Widget::timerEvent(QTimerEvent *)
{
    QTime sysTime = QTime::currentTime();

    QString timeText = sysTime.toString("hh:mm:ss");
    if(showflag)
    {
        timeText[5]=':';
        showflag=false;
    }
    else
    {
        timeText[5]=' ';
        showflag=true;
    }
    ui->lcd2->display(timeText);
    if(begin==1)
    {
        QString alarm =ui->alarm->text();
        //qDebug()<<alarm;
        timeText = sysTime.toString("h:mm");
        if(alarm==timeText)
        {
            QTextToSpeech::State state=speech.state();
            if(state==0)
            {
                speech.say(strTxtEdt);
            }
        }
    }
}

void Widget::on_start_clicked()
{
    strTxtEdt = ui->info->toPlainText();
    ui->alarm->setEnabled(false);
    ui->info->setEnabled(false);
    begin=1;
}

void Widget::on_stop_clicked()
{
    ui->alarm->setEnabled(true);
    ui->info->setEnabled(true);
    begin=0;
    speech.stop();
}

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

运行结果

选择闹铃时间,输入播报文本,点击start
锁定播报文本和闹铃设置,当到达闹铃时间,循环播报文本内容
若超过所定时间则停止播报

点击stop,解锁播报文本和闹铃,若播报未停止则停止播报

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名大学生M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值