日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单的Qt倒计时程序--番茄钟

發(fā)布時間:2023/12/31 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单的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

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

最后一點(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。