当前位置:首页 » 《关注互联网》 » 正文

使用C++编写一个语音播报时钟(Qt)

5 人参与  2024年09月13日 17:21  分类 : 《关注互联网》  评论

点击全文阅读


要求:当系统时间达到输入的时间时,语音播报对话框中的内容。定时可以取消。qt界面如上图所示。组件如下:
countdownEdit作为书写目标时间的line_edit
start_btn作为开始和停止的按钮
stop_btn作为取消的按钮
systimelab显示系统时间的lab
textEdit显示播报内容

代码:头文件:

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QTimer>            //定时器类#include<QTime>            //时间类#include<QTimerEvent>       //定时器事件类#include<QDateTime>         //日期时间类#include <QtTextToSpeech>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{    Q_OBJECTpublic:    Widget(QWidget *parent = nullptr);    ~Widget();private slots:    void on_stop_btn_clicked();    void on_start_btn_clicked();    void sys_time_slot();private:    Ui::Widget *ui;    //定义一个定时器变量    QTimer t1;    int tid = 0;        //定时器id号    //void timerEvent(QTimerEvent *event) override;    //定时器事件处理函数的声明    QTextToSpeech *textToSpeech;};#endif // WIDGET_H

程序文件:
 

#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent)    : QWidget(parent), ui(new Ui::Widget), textToSpeech(new QTextToSpeech(this)){    ui->setupUi(this);    // 由于定时器事件的信号与槽的绑定只需要一次,所以直接写在构造函数中即可    connect(&t1, &QTimer::timeout, this, &Widget::sys_time_slot);}Widget::~Widget(){    delete ui;}void Widget::on_start_btn_clicked(){    if (ui->start_btn->text() == "启动")    {        t1.start(1000); // 每隔指定的时间,发送一个systime的信号        ui->start_btn->setText("停止");    }    else    {        t1.stop();        ui->start_btn->setText("启动");    }}void Widget::sys_time_slot(){    // 获取系统的时间    QTime sysTime = QTime::currentTime();    // 将QTime类对象转变成字符串    QString tm = sysTime.toString("hh:mm:ss");    // 将时间展示到ui界面上    ui->systimelab->setText(tm);    // 设置标签居中显示    ui->systimelab->setAlignment(Qt::AlignCenter);    // 比较系统时间和用户输入的时间    if (tm == ui->countdownEdit->text())    {        ui->textEdit->append("三更灯火五更鸡,\n正是男儿读书时,\n黑发不知勤学早,\n白首方悔读书迟。");        // 语音播报        textToSpeech->say(ui->textEdit->toPlainText());    }}void Widget::on_stop_btn_clicked(){    ui->start_btn->setText("启动");    ui->countdownEdit->setText("00:00:00"); // 清除显示}


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/159449.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1