QT5實現(xiàn)電子時鐘
本文實例為大家分享了QT5實現(xiàn)電子時鐘的具體代碼,供大家參考,具體內(nèi)容如下
一、電子時鐘的顯示
效果如下:
電子時鐘顯示
二、新建工程
Widgets Application項目名位clock,基礎(chǔ)類位QDialog,取消創(chuàng)建UI界面的勾選框,項目名右擊添加新文件
在彈出的對話框中選擇“C++ Class”,Base class基礎(chǔ)類名“QLCDNumber”,class name命名為digiclock,點擊完成。
三、編輯digiclock.h文件
#ifndef DIGICLOCK_H #define DIGICLOCK_H #include <QLCDNumber> ? class DigiClock : public QLCDNumber { public: ? ? DigiClock(QWidget *parent=0); ? ? void mousePressEvent(QMouseEvent *); ? ? void mouseMoveEvent(QMouseEvent *); private slots: ? ? void showTime();//顯示槽函數(shù) ? private: ? ? QPoint dragPosition;//相對位置偏移 ? ? bool showColon;//是否顯示“:” ? ? QTimer *mtimer; }; ? #endif // DIGICLOCK_H
四、編輯digiclock.cpp文件
#include "digiclock.h" #include <QTime> #include <QTimer> #include <QMouseEvent> #include <QDebug> ? DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent) { ? ? QPalette p = palette();// ? ? p.setColor(QPalette::Window,Qt::blue); ? ? setPalette(p);//設(shè)置窗體顏色 ? ? setWindowFlags(Qt::FramelessWindowHint);//窗體設(shè)置位無邊框 ? ? setWindowOpacity(0.5);//設(shè)置透明度 ? ? mtimer = new QTimer(this);//new 定時器對象 ? ? //下列方法1不可以定時 ? ? //connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime())); ? ? //下列方法2可以實現(xiàn)定時 ? ? connect(mtimer,&QTimer::timeout,[=](){showTime();}); ?? ? ? if(mtimer->isActive()==false)//定時器檢查激活狀態(tài) ? ? { ? ? mtimer->start(1000);//啟動 ? ? } ? ? showTime();//槽函數(shù) ? ? resize(300,60); ? ? showColon=true; } void DigiClock::showTime() { ? ? QTime time1 = QTime::currentTime();//獲取當(dāng)前時間 ? ? QString text = time1.toString("hh:mm:ss"); ? ? this->setDigitCount(8);//設(shè)置顯示長度 ? ? ? if(showColon) ? ? { ? ? ? ? text[2]=':'; ? ? ? ? text[5]=':'; ? ? ? ? showColon=false; ? ? }else ? ? { ? ? ? ? text[2]=' '; ? ? ? ? text[5]=' '; ? ? ? ? showColon=true; ? ? } ? ? ?//qDebug()<<text; ? ? ?display(text); } void DigiClock::mousePressEvent(QMouseEvent *event) { ? ? if(event->button()==Qt::LeftButton) ? ? { ? ? ? ? //獲取移動參考點 ? ? ? ? dragPosition=event->globalPos()-frameGeometry().topLeft(); ? ? ? ? event->accept(); ? ? } ? ? if(event->button()==Qt::RightButton) ? ? { ? ? ? ? close(); ? ? } } void DigiClock::mouseMoveEvent(QMouseEvent *event) { ? ? if(event->buttons()&Qt::LeftButton) ? ? { ? ? ? ? move(event->globalPos()-dragPosition);//拖拽移動 ? ? ? ? event->accept(); ? ? } }
五、編輯主函數(shù)
#include "dialog.h" ? #include <QApplication> #include "digiclock.h" ? int main(int argc, char *argv[]) { ? ? QApplication a(argc, argv); ? ? DigiClock w; ? ? w.show(); ? ? return a.exec(); }
六、總結(jié)
調(diào)試方法1時,connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime()));不能實現(xiàn)定時的效果,糾結(jié)了好一陣,還是沒發(fā)現(xiàn)問題,可能時QT書寫形式更新了?
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Opencv實現(xiàn)邊緣檢測與輪廓發(fā)現(xiàn)及繪制輪廓方法詳解
這篇文章主要介紹了Opencv實現(xiàn)邊緣檢測與輪廓發(fā)現(xiàn)及繪制輪廓方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12C語言數(shù)據(jù)結(jié)構(gòu)與算法時間空間復(fù)雜度基礎(chǔ)實踐
這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)與算法中時間空間復(fù)雜度的基礎(chǔ)實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02C++11 <future>中std::promise 介紹
這篇文章主要介紹了C++11 <future>中std::promise 介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02探討:將兩個鏈表非降序合并為一個鏈表并依然有序的實現(xiàn)方法
本篇文章是對將兩個鏈表非降序合并為一個鏈表并依然有序的實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05