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定时器
}

效果演示

思维导图

相关推荐
xlp666hub16 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网17 小时前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub19 小时前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
不想写代码的星星20 小时前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++
xlp666hub1 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
不想写代码的星星2 天前
C++继承、组合、聚合:选错了是屎山,选对了是神器
c++
不想写代码的星星3 天前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
樱木Plus5 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
blasit7 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_8 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++