QT DAY4作业

1.

头代码

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QTextToSpeech>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
    void timerEvent(QTimerEvent *e);  //定时器执行函数

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    int id;  //定时器返回id
    int id2;
    QString s;
    QTextToSpeech *speecher;  //创建一个语音播报者

};

#endif // WIDGET_H

源代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    id = startTimer(1000);  //每隔1s执行功能代码
    speecher = new QTextToSpeech(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);
}

void Widget::timerEvent(QTimerEvent *e)
{
    //判断计时器id
    if(e->timerId() == id)
    {    //获取当前时间
        QTime sys_time = QTime::currentTime();

        s = sys_time.toString("hh:mm:ss");

        //将获取时间放入label中
        ui->sys_lab->setText(s);

        //设置居中显示
        ui->sys_lab->setAlignment(Qt::AlignCenter);
    }else if(e->timerId() == id2)
    {

        if(ui->lineEdit->text() == s)
          {
            for(int i=0;i<5;i++)
            {
               speecher->say(ui->label_2->text());
            }
            //关闭定时器
            killTimer(id2);
            ui->pushButton->setText("启动");
            ui->lineEdit->clear();
          }
    }
}

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


//启动按钮对应槽函数处理
void Widget::on_pushButton_clicked()
{
    if(ui->pushButton->text() == "启动")
    {
        //启动定时器
        id2 = startTimer(1000);

        ui->pushButton->setText("关闭");
    }else {
        //关闭定时器
        killTimer(id2);

        ui->pushButton->setText("启动");
    }
}

效果图

2.思维导图

相关推荐
古月-一个C++方向的小白4 小时前
C++11之lambda表达式与包装器
开发语言·c++
沐知全栈开发5 小时前
Eclipse 生成 jar 包
开发语言
杭州杭州杭州6 小时前
Python笔记
开发语言·笔记·python
tanyongxi666 小时前
C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
开发语言·c++
阿葱(聪)7 小时前
java 在k8s中的部署流程
java·开发语言·docker·kubernetes
浮生带你学Java8 小时前
2025Java面试题及答案整理( 2025年 7 月最新版,持续更新)
java·开发语言·数据库·面试·职场和发展
斯是 陋室8 小时前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
李长渊哦9 小时前
深入理解Java中的Map.Entry接口
java·开发语言
koooo~9 小时前
JavaScript中的Window对象
开发语言·javascript·ecmascript
tju新生代魔迷9 小时前
C++:list
开发语言·c++