12月12日作业

设计一个闹钟

头文件

复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QTime>
#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 *e);  //对基类中的虚函数重写
private slots:
    void on_btn_clicked();

private:
    Ui::Widget *ui;
    int id1;  //定时器id
    int id2;  //闹钟id
    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);

    id1 = startTimer(1000);  //启动id1定时器
    speecher = new QTextToSpeech(this);
}

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

//定时器超时时,自动执行的代码
void Widget::timerEvent(QTimerEvent *e)
{
    //判断定时器
    if(e->timerId() == id1)
    {
        //获取系统时间
        QTime sys_time = QTime::currentTime();
        //将系统时间转换
        QString s = sys_time.toString("hh:mm:ss");
        //将取到的时间放入label1中
        ui->label1->setText(s);
        //居中显示
        ui->label1->setAlignment(Qt::AlignCenter);
    }
    else if(e->timerId() == id2)
    {
        //每秒判断一次,时间相同时做出反应
        if(ui->edit->text() == ui->label1->text())
        {
            ui->label3->setText("只要学不死,就往死里学");
            for(int i = 0;i < 5;i++)
            {
                speecher->say(ui->label3->text());
            }
        }
    }
}
//启动按钮按下后的进行处理的槽函数
void Widget::on_btn_clicked()
{
    id2 = startTimer(1000);  //启动id2定时器
}

效果演示

思维导图

相关推荐
basketball6166 小时前
设计模式入门:3. 适配器模式详解 C++实现
c++·设计模式·适配器模式
程序大视界7 小时前
【C++ 从基础到项目实战】C++(二):数组、字符串与结构体——组织数据的容器
开发语言·c++·cpp
叶子野格7 小时前
《C语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
Lumbrologist7 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法
A_humble_scholar8 小时前
C++11 学习笔记:统一初始化、右值引用与完美转发
c++·笔记·学习
叶子野格8 小时前
《C语言学习:位运算》17
c语言·开发语言·c++·学习·visual studio
晚风吹红霞9 小时前
C++ stack 和 queue 完全指南:适配器模式与双端队列的奥秘
c++·算法·适配器模式
代码改善世界9 小时前
【C++进阶】红黑树模拟实现mymap和myset
开发语言·c++
断点之下10 小时前
从C的struct到C++的class:封装、this指针、三大特性入门
开发语言·c++
誰能久伴不乏10 小时前
工业级 Modbus 上位机架构:基于滴答引擎与状态锁的高并发调度器
c++·qt·架构