qt 闹钟实现

news/2024/11/8 12:01:02/

实现一个闹钟  自定义时间 按下开始后 开始计时,结束计时会播报语音

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>
#include <QTimerEvent>
#include <QDateTime>
#include <QTime>
#include <QTextToSpeech>
#include <QString>
#include <QMessageBox>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();//重写定时器事件处理函数void timerEvent(QTimerEvent *e) override;private slots:void on_startbtn_clicked();void timeout_slot();void on_stopbtn_clicked();private:Ui::Widget *ui;QTimer *obj_timer;QTime sys_time;//定义一个计时器的idint event_timer;QTextToSpeech *speech;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);speech=new QTextToSpeech(this);ui->stopbtn->setEnabled(false);obj_timer=new QTimer(this);obj_timer->start(1000);//将定时器发射的timeout信号与自定义的槽函数进行连接connect(obj_timer,&QTimer::timeout,this,&Widget::timeout_slot);ui->te3->setText("今天辛苦啦!打工人~ 好好休息哦");}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *e)
{if(e->timerId()==event_timer){if(ui->te2->toPlainText()==sys_time.toString("hh:mm:ss")){speech->say("时间到了");ui->startbtn->setEnabled(true);ui->stopbtn->setEnabled(false);ui->te2->setEnabled(true); //设置时间可以被更改this->killTimer(event_timer); //关闭第二个的计时器ui->te3->clear();ui->te3->setText("来活了!");}
}
}void Widget::on_startbtn_clicked()
{if(ui->startbtn->isEnabled()){ui->startbtn->setEnabled(false); //设置开始按钮 不可按ui->stopbtn->setEnabled(true);ui->te2->setEnabled(false); //设置时间不能更改event_timer=this->startTimer(1000);ui->te3->clear();ui->te3->setText("离你预定的时间很近咯!");}}void Widget::timeout_slot()
{ui->te1->setAlignment(Qt::AlignCenter);sys_time=QTime::currentTime();ui->te1->setText(sys_time.toString("hh:mm:ss"));}void Widget::on_stopbtn_clicked()
{QMessageBox::information(this,"停止对话框","计时停止");this->killTimer(event_timer); //关闭第二个的计时器ui->startbtn->setEnabled(true); //设置开始按钮 不可按ui->te2->setEnabled(true); //设置时间可以被更改ui->stopbtn->setEnabled(false);ui->te3->setText("好消息 事件已经被取消啦!可以多休息一会啦");}

运行结果:

 


http://www.ppmy.cn/news/814073.html

相关文章

ps钢笔工具的详细讲解

本文转自&#xff1a;http://blog.sina.com.cn/s/blog_6e1dc1080100nm7z.html&#xff0c;感谢作者分享&#xff01; 首先来简要介绍一下钢笔工具和路径的概念 1、钢笔工具属于矢量绘图工具&#xff0c;其优点是可以勾画平滑的曲线&#xff0c;在缩放或者变形之后仍能保持平滑效…

PS使用技巧(四) 钢笔尖 P 直接选择工具 A

钢笔尖工具&#xff0c;操作锚点和手柄的形式绘制图形&#xff0c;然而直接选择工具&#xff0c;是将绘制的锚点和手柄进行修改。 钢笔尖在前端的应用中&#xff0c;很少能涉及到&#xff0c;但是得知道&#xff0c;偶尔画个小图标&#xff0c;或者偶尔修改个形状都能用到&…

indesign如何画弧线_钢笔工具怎么绘制弧线?AI钢笔工具用法全解

ai中的钢笔工具是我们经常需要用到的&#xff0c;并且也是一个重要的难点&#xff0c;尤其对于新手来说&#xff0c;更不知道怎么操作&#xff0c;那么钢笔工具怎么绘制弧线?下面小编就为大家介绍AI钢笔工具用法&#xff0c;希望对学习钢笔工具的朋友有所帮助。 下面就一起来看…

LeetCode-外观数列【小名带你解读LeetCode第38题-外观数列 的题目!最清晰的题解】

一道读题读到懵的题目&#xff0c;通过这题&#xff0c;我发现&#xff0c;我不止是算法差&#xff0c;语文更差&#xff01;嗯&#xff01;很多题不是不会&#xff01;而是我没有读懂题&#xff01;没错&#xff01;就是这个原因&#xff01;&#x1f602; 题目&#xff1a; …

哪个电容笔是主动式?好用不贵电容笔测评

主动式电容笔和被动式电容笔最大的区别是&#xff0c;主动电容笔可以更好的控制屏幕&#xff0c;能适用于一切的电容式显示屏。如今&#xff0c;人们对电容笔的了解日益加深&#xff0c;人们也逐渐地采用了它。为了获得更好的使用效果&#xff0c;电容笔可以采用平替电容笔&…

触屏笔和电容笔哪个好?非常值得入手的电容笔推荐

我们是否要在IPAD买完后再去买苹果的Pencil&#xff1f;事实上&#xff0c;就算是画画&#xff0c;也不需要用到苹果笔。除了Apple Pencil&#xff0c;目前也有大量的平替电容笔。用来做日常的记录和记录&#xff0c;都是非常有用的。而且平替的电容笔&#xff0c;在价格上会实…

Ps钢笔工具及其附属工具的用法

一&#xff0e;打开Ps后可以看到整个页面的最左端的工具栏&#xff0c;从上往下数第十五个就是钢笔工具&#xff0c;鼠标右键&#xff0c;右键之后就会出现一个小的工具栏&#xff0c;那就是钢笔工具的附属工具从上往下分 别是钢笔工具、自由钢笔工具、添加锚点工具、删除锚点工…

一只钢笔的测试点

转载于:https://www.cnblogs.com/suitcases/p/10153522.html