QT作业day5

实现闹钟

头文件:

#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("启动");
    }
}

 

Qt_day5作业1

思维导图:

 

 

相关推荐

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

    QT作业5

    2024-03-27 19:40:04      29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 19:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 19:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 19:40:04       82 阅读
  4. Python语言-面向对象

    2024-03-27 19:40:04       91 阅读

热门阅读

  1. 软件开发工具(自考小资料)

    2024-03-27 19:40:04       34 阅读
  2. AI赋能写作:ChatGPT让论文大放异彩

    2024-03-27 19:40:04       40 阅读
  3. 5.85 BCC工具之tcprtt.py解读

    2024-03-27 19:40:04       39 阅读
  4. C++入门

    C++入门

    2024-03-27 19:40:04      34 阅读
  5. Python石头、剪刀、布游戏

    2024-03-27 19:40:04       40 阅读
  6. STEP 格式三维模型读取

    2024-03-27 19:40:04       43 阅读
  7. 算法刷题day36

    2024-03-27 19:40:04       30 阅读
  8. 三、 mariadb数据库用户管理

    2024-03-27 19:40:04       43 阅读
  9. 大话设计模式之策略模式

    2024-03-27 19:40:04       45 阅读
  10. 力扣hot 100:1. 两数之和(未完成待更新)

    2024-03-27 19:40:04       40 阅读
  11. 天地图加载WMS图层服务,点击获取图层信息

    2024-03-27 19:40:04       42 阅读
  12. 零基础Web3入门到精通

    2024-03-27 19:40:04       41 阅读