2024.3.26 QT

思维导图

实现闹钟

头文件:

#define ALARM_CLOCK_H
 
#include <QWidget>
#include <QTime>
#include <QTimerEvent>
#include <QTimer>
#include <QtTextToSpeech> //文本转语音类
#include <QDebug>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Alarm_clock; }
QT_END_NAMESPACE
 
class Alarm_clock : public QWidget
{
    Q_OBJECT
 
public:
    Alarm_clock(QWidget *parent = nullptr);
    ~Alarm_clock();
 
    //声明重写定时器事件函数
    void timerEvent(QTimerEvent *e);
 
 
private slots:
    void on_start_button1_clicked();  //开始获取系统时间按钮槽函数声明
 
    void on_start_button2_clicked();  //启动闹钟槽按钮函数声明
 
private:
    Ui::Alarm_clock *ui;
 
    int id1; //系统时间定时器id
    int id2;//闹钟定时器id
    //实例化一个语言播报者
    QTextToSpeech *speecher;
};
#endif // ALARM_CLOCK_H

源文件:

#include "alarm_clock.h"
#include "ui_alarm_clock.h"
 
Alarm_clock::Alarm_clock(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Alarm_clock)
    ,speecher(new QTextToSpeech(this))  //给语言播报者实例化空间
{
    ui->setupUi(this);
}
 
Alarm_clock::~Alarm_clock()
{
    delete ui;
}
 
//定时器超时事件发送处理函数
void Alarm_clock::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == id1) //获取系统时间处理
    {
        //获取系统时间
        QTime sys_time = QTime::currentTime();
        //将系统时间转换成字符串设置到窗口上的show_systime航编辑器上
        ui->show_systime->setText(sys_time.toString("hh:mm:ss"));
        //居中显示
        ui->show_systime->setAlignment(Qt::AlignCenter);
    }
    else if(e->timerId() == id2)//闹钟超时处理
    {
        ui->text_lable->setText("起床了,上学要迟到了");
        int count = 0;
        while(count<5)  //循环播报5次后结束,并关闭定时器
        {
            speecher->say(ui->text_lable->text());
            count++;
        }
        killTimer(id2);
        ui->start_button2->setText("启动");
    }
}
 
//开始获取系统时间按钮对应的槽函数实现
void Alarm_clock::on_start_button1_clicked()
{
    if(ui->start_button1->text() == "开始")
    {
        //设置定时器
        id1 = startTimer(1000);//每隔一秒更新系统时间在ui界面上的显示
        //改变按钮文本
        ui->start_button1->setText("结束");
    }
    else
    {
        killTimer(id1);
        ui->start_button1->setText("开始");
    }
}
//启动闹钟槽按钮函数实现
void Alarm_clock::on_start_button2_clicked()
{
    if(ui->start_button2->text() == "启动")
    {
        QTime sys_time = QTime::currentTime();//获取系统时间
        QTime alarm_clock = QTime::fromString(ui->time_Edit->text(),"hh:mm:ss");//将设置的闹钟事件从字符串转换为QTime类
        int number = -alarm_clock.msecsTo(sys_time);//计算时差
        //设置定时器
        id2 = startTimer(number);
        //改变按钮文本
        ui->start_button2->setText("关闭");
    }
    else
    {
        killTimer(id2);
        ui->start_button2->setText("启动");
    }
}

相关推荐

  1. <span style='color:red;'>QT</span>

    QT

    2024-03-27 06:42:02      8 阅读
  2. <span style='color:red;'>QT</span>

    QT

    2024-03-27 06:42:02      10 阅读
  3. Qt 使用qm文件

    2024-03-27 06:42:02       12 阅读

最近更新

  1. C组暑假第一次训练题解

    2024-03-27 06:42:02       0 阅读
  2. 构建基于Spring Boot的数据分析平台

    2024-03-27 06:42:02       0 阅读
  3. 每天一个数据分析题(四百零十)- 主成分

    2024-03-27 06:42:02       1 阅读
  4. 卷积神经网络:目标检测的黄金钥匙

    2024-03-27 06:42:02       1 阅读
  5. Pandas 基础 —— 探索数据分析的第一步

    2024-03-27 06:42:02       1 阅读
  6. MyBatisPlus

    2024-03-27 06:42:02       1 阅读
  7. Android 通用视频组件开发

    2024-03-27 06:42:02       1 阅读
  8. 目标检测算法详细介绍!

    2024-03-27 06:42:02       1 阅读
  9. 中医四大经典之 No.1

    2024-03-27 06:42:02       1 阅读

热门阅读

  1. 1969. 数组元素的最小非零乘积

    2024-03-27 06:42:02       19 阅读
  2. QT学习之UDP

    2024-03-27 06:42:02       19 阅读
  3. spring缓存通用配置

    2024-03-27 06:42:02       18 阅读
  4. sqlite删除数据表

    2024-03-27 06:42:02       19 阅读
  5. GPT大语言模型助力R语言开展数据统计分析

    2024-03-27 06:42:02       14 阅读
  6. torchvision.datasets.ImageFolder

    2024-03-27 06:42:02       15 阅读
  7. 在虚拟机CentOs_7_64环境中安装Docker和Docker-Compose

    2024-03-27 06:42:02       17 阅读
  8. 如何利用nginx在Centos上搭建文件服务器

    2024-03-27 06:42:02       23 阅读
  9. pytorch | tensor转换为float

    2024-03-27 06:42:02       19 阅读
  10. 机器学习 - 神经网络中的训练模型

    2024-03-27 06:42:02       20 阅读