简单的Qt倒计时程序--番茄钟
為了方便在電腦上使用番茄鐘,自己寫了一個(gè)簡(jiǎn)單的Qt程序,用到了QLCDNumber顯示剩余時(shí)間,Timer定時(shí)器發(fā)射定時(shí)信號(hào),QPushbutton開(kāi)始按鈕。
點(diǎn)擊開(kāi)始工作會(huì)開(kāi)始倒計(jì)時(shí),為了方便觀看加了一個(gè)霸道的窗口置頂,切換應(yīng)用后也永遠(yuǎn)在頂端顯現(xiàn)。
25分鐘結(jié)束后倒計(jì)時(shí)界面變紅,再次點(diǎn)擊開(kāi)始工作重新進(jìn)入倒計(jì)時(shí)。
總之,程序相當(dāng)簡(jiǎn)單,界面也就只有一個(gè)lcd顯示屏+一個(gè)按鈕。主要是為了窗口置頂功能,省了平常還要使用deskpin的麻煩233333.
把代碼放上來(lái):只更改了widget.h和widget.cpp文件,main.cpp及.pro文件并未修改。
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("開(kāi)始工作");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"); }最后一點(diǎn):
不知道為什么,如果使用timer->stop代替disconnect的話,會(huì)莫名進(jìn)入到加速狀態(tài)。第一次點(diǎn)擊開(kāi)始按鈕,正常倒計(jì)時(shí);第二次點(diǎn)擊開(kāi)始,每秒顯示的數(shù)字其實(shí)是減2…;第N次每秒數(shù)字減N。沒(méi)搞明白為什么timer明明stop了卻好像還在計(jì)時(shí)?不過(guò)最后采用斷開(kāi)槽連接之后確實(shí)沒(méi)問(wèn)題了。
總結(jié)
以上是生活随笔為你收集整理的简单的Qt倒计时程序--番茄钟的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 四位数字密码锁
- 下一篇: c++ GUI轻量工具包FLTK介绍 (