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