为了方便在电脑上使用番茄钟,自己写了一个简单的Qt程序,用到了QLCDNumber显示剩余时间,Timer定时器发射定时信号,QPushbutton开始按钮。

点击开始工作会开始倒计时,为了方便观看加了一个霸道的窗口置顶,切换应用后也永远在顶端显现。

25分钟结束后倒计时界面变红,再次点击开始工作重新进入倒计时。

总之,程序相当简单,界面也就只有一个lcd显示屏+一个按钮。主要是为了窗口置顶功能,省了平常还要使用deskpin的麻烦233333.

把代码放上来:只更改了widget.h和widget.cpp文件,main.cpp及.pro文件并未修改。
widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDialog>
#include <QLCDNumber>
#include <QVBoxLayout>
#include <QPushButton>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
signals:
public slots:void onTimeout();void clickOnButton();
private:QLCDNumber *lcd;QTimer *timer;int minute=25,second=0;QVBoxLayout *layout;QPushButton *startbutton;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include <QtGui>
#include <QLCDNumber>
#include <QTime>
#include <QTimer>
#include <QVBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent)
{lcd=new QLCDNumber();lcd->setDigitCount(5);lcd->setMode(QLCDNumber::Dec);lcd->setSegmentStyle(QLCDNumber::Flat);timer=new QTimer();timer->setInterval(1000);timer->start();startbutton=new QPushButton("开始工作");connect(startbutton,SIGNAL(clicked(bool)),this,SLOT(clickOnButton()));QVBoxLayout *layout = new QVBoxLayout();layout->addWidget(lcd);layout->addWidget(startbutton);this->setLayout(layout);this->resize(400,200);this->setWindowFlag(Qt::WindowStaysOnTopHint);//this->setWindowFlags(Qt::Widget | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowStaysOnTopHint);
}Widget::~Widget(){}void Widget::onTimeout(){QString s_minute=QString::number(minute);QString s_second=QString::number(second);if (s_minute.length()==1)   s_minute="0"+s_minute;if(s_second.length()==1)    s_second="0"+s_second;QString disp=s_minute+":"+s_second;lcd->display(disp);//QTime time = QTime::currentTime();//lcd->display(time.toString("mm:ss"));if((minute!=0)|(second!=0)){if(second==0){second=59;minute--;}elsesecond--;}elselcd->setStyleSheet("background-color:red");//lcd->display(QTime::currentTime().toString(QString::number(minute)+":"+QString::number(second)));
}void Widget::clickOnButton(){this->minute=25;this->second=0;disconnect(timer,SIGNAL(timeout()),this,SLOT(onTimeout()));connect(timer,SIGNAL(timeout()),this,SLOT(onTimeout()));this->lcd->setStyleSheet("background-color:white");
}

最后一点:
不知道为什么,如果使用timer->stop代替disconnect的话,会莫名进入到加速状态。第一次点击开始按钮,正常倒计时;第二次点击开始,每秒显示的数字其实是减2…;第N次每秒数字减N。没搞明白为什么timer明明stop了却好像还在计时?不过最后采用断开槽连接之后确实没问题了。

简单的Qt倒计时程序--番茄钟相关推荐

  1. 简黑时钟 AClock 2.8 中文版 ,一款全屏翻页时钟/倒计时/番茄钟

    AClock 是一款多功能 Mac翻页时钟应用,支持倒计时功能,可以将翻页时钟设置为mac的屏幕保护. 特色功能: 翻页时钟.经典数字时钟随心切换 内置便捷的秒表.倒计时.番茄钟 自定义日期 - 倒数 ...

  2. 网页番茄钟(Pomodoro timer)

    用js/jq实现一个番茄钟的方法 最终效果如图: 这个番茄钟主要的功能需求有三个: 1. 修改休息时间 2. 修改工作时间 3. 显示timer 修改时间的部分比较简单,需要注意的就是在时间为1分钟的 ...

  3. Qt入门程序,通过qtcreater创建一个项目

    2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对话框,选择Qt Widgets Appl ...

  4. Python实现简单的闹钟/倒计时/番茄钟软件并打包成exe

    文章目录 开发背景 程序界面及使用介绍 程序源码 使用Pyinstaller打包成exe 程序下载链接 备注 开发背景 玩电脑总是忘记休息,手机定闹钟太麻烦,在网上也没有搜索到符合我需求的极简软件,故 ...

  5. 从无到有的基于QT软件的DIY桌面番茄钟(上)

    基于QT软件的DIY桌面番茄钟-上篇 前言 参考本教程(上篇)可实现的功能: 实现细节: Day 1: 需求导图: QT的安装: Day 2: 创建项目: 构建无边框界面(后续可添加缩放功能,未添加) ...

  6. 基于微信小程序实现番茄钟专注时间项目演示【附项目源码+论文说明】

    基于微信小程序实现番茄钟专注时间项目演示 摘要 时间管理是指事先计划和运用一定的技能.方法和事物,以敏感.有效地利用时间完成既定的个人或安排的过程.其中番茄法则是一种先进的时间管理理论与方法,正受到越 ...

  7. 微信小程序--实现番茄钟功能

    番茄钟: 经常使用番茄钟的各种app,自己也想尝试一下制作,该小程序主要实现了番茄时钟.效率统计等功能. 设计如下: 代码地址:https://gitcode.net/weiba_tao/myprac ...

  8. 利用python写时钟程序_如何用python编写一个番茄钟程序

    今天,我们尝试用python来编写一个简单的PC端番茄钟,需要实现的功能如下:启动时"滴"一声并询问:"休息时间结束!是否开始一个新的番茄钟?" 如果用户点击& ...

  9. 备忘录,番茄钟,复盘反馈的学习类小程序

    寒假完成的一个项目,对javascript真的是从零开始学起不过很好上手,借助于方便的云开发,也不用折腾后端,最后也顺利结题了. 本项目开发了一款软件,帮助大学生制作定制的学习计划,改善学习习惯,提高 ...

  10. 基于微信小程序实现番茄钟专注时间项目演示【附项目源码+论文说明】分享

    基于微信小程序实现番茄钟专注时间项目演示 摘要 时间管理是指事先计划和运用一定的技能.方法和事物,以敏感.有效地利用时间完成既定的个人或安排的过程.其中番茄法则是一种先进的时间管理理论与方法,正受到越 ...

最新文章

  1. 阿里云Windows服务器重启后无法远程桌面连接,大量注册表在检测
  2. sysbench 性能测试
  3. DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
  4. docker环境配置
  5. Oracle 创建,查询,删除 job
  6. boost::mp11::mp_transform_front相关用法的测试程序
  7. [HEOI2012] 朋友圈(最大团 + 结论 + 二分图 + 网络流)
  8. MyEclipse 10.5 安装SVN插件
  9. 没想到,我们的分布式缓存竟这样把注册中心搞垮!
  10. notnull注解_Hibernate Validator 第19篇:自定义约束-约束注解
  11. Linq Join
  12. Google中国要来啦
  13. 关于用户身份及密码问题的说明
  14. 一个简单的把对象序列化/反序列化为json格式的程序
  15. Tomcat控制台中文乱码怎么处理[已解决 绝对好用]
  16. Sql Server数据库中查询操作时“对象名无效”解决方法
  17. 【NCC】NCC 附件管理按钮开发,从ftp下载附件到文件服务器开发笔记
  18. C++的future,promise,packaged_task
  19. 互联网常见通用的运营数据指标
  20. 常见的POS打印机分类

热门文章

  1. Edge(chrome内核)浏览器Linux版本初体验
  2. 利用anaconda 下载python所依赖的文件包
  3. Apizza在线接口工具如何支持RESTful Path 参数
  4. [连接机顶盒]-使用 adb 命令行无线连接 EC6108V9 华为悦盒
  5. 汇总3种获取水系数据的途径
  6. 四叶草关闭啰嗦模式_教你如何解决 Win7 64位卡LOGO(四叶草)
  7. Hadoop配置和启动
  8. tomcat优化问题
  9. mysql sql语法分析验证优化工具
  10. 分享一下好用的本地格式化软件hijson,这个居然还有人要收费才能下载,真是醉了