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();//獲取當前時間
? ? 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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Opencv實現(xiàn)邊緣檢測與輪廓發(fā)現(xiàn)及繪制輪廓方法詳解
這篇文章主要介紹了Opencv實現(xiàn)邊緣檢測與輪廓發(fā)現(xiàn)及繪制輪廓方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-12-12
C語言數(shù)據(jù)結(jié)構(gòu)與算法時間空間復雜度基礎(chǔ)實踐
這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)與算法中時間空間復雜度的基礎(chǔ)實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02
C++11 <future>中std::promise 介紹
這篇文章主要介紹了C++11 <future>中std::promise 介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02
探討:將兩個鏈表非降序合并為一個鏈表并依然有序的實現(xiàn)方法
本篇文章是對將兩個鏈表非降序合并為一個鏈表并依然有序的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05

