首頁 > 軟體

Qt實現電子時鐘的範例程式碼

2022-06-18 18:01:48

一、專案介紹

利用Qt實現顯示與桌面上並可以隨意拖拽至桌面任意位置的電子時鐘案例。

二、專案基本設定

新建一個Qt案例,專案名稱為“Clock”,基礎類別選擇“QDialog”,取消建立UI介面核取方塊的選中狀態。

三、UI介面設計

無UI介面

四、主程式實現

4.1 新增新檔案

新增新檔案:

選擇“C++ Class”選項,單擊“Choose”按鈕,選擇“Base class”文字方塊中輸入基礎類別名“QLCDNumber”(手動新增),在“Class name”文字方塊中輸入類的名稱“DigiClock”:

4.2 digiclock.h標頭檔案

程式碼如下:

#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include <QLCDNumber>

class DigiClock : public QLCDNumber
{
    Q_OBJECT
public:
    DigiClock(QWidget *parent=0);
    void mousePressEvent(QMouseEvent *);
    void mouseMoveEvent(QMouseEvent *);

public slots:
    void showTime();    //顯示當前時間

private:
    QPoint dragPosition;  //儲存滑鼠點相對電子時鐘表單左上角的偏移量
    bool showColon;       //用於顯示時間時是否顯示:
};

#endif // DIGICLOCK_H

4.3 digiclock.cpp原始檔

首先,DigiClock類繼承自QLCDNumber類:

DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{
//設定時鐘背景
QPalette p=palette();//定義調色盤物件
p.setColor(QPalette::Window,Qt::blue);//設定背景顏色為藍色
setPalette(p);//啟用調色盤物件
setWindowFlags(Qt::FramelessWindowHint);//生成無邊界視窗
setWindowOpacity(0.5);//設定表單透明度為0.5
QTimer *timer=new QTimer(this);//新建定時器物件
connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));//連線定時器地timeout()訊號與顯示時間的槽訊號showTime()
timer->start(1000);//啟動定時器(每隔1000ms啟動一次)
showTime();//初始時間顯示
resize(150,60);//設定電子時鐘顯示的尺寸
showColon=true;//初始化

}

然後定義槽函數showTime(),完成電子鐘的顯示時間功能:

//槽函數showTime()
void DigiClock::showTime()
{
    QTime time=QTime::currentTime();    //獲取當前系統時間
    QString text=time.toString("hh:mm");//獲取的當前時間轉換為字串型別
    if(showColon)                        //控制:閃爍
    {
        text[2]=':';
        showColon=false;
    }
    else
    {
        text[2]=' ';
        showColon=true;
    }
    display(text);    //顯示轉換好的字串時間
}

接著,定義滑鼠按下事件響應函數:

//滑鼠按下事件響應函數
void DigiClock::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton) //判斷按下鍵是否為滑鼠左鍵
    {
        //dragPosition=event->globalPos()-frameGeometry().topLeft();
        dragPosition=event->pos();//兩種方法
        //event->accept();//接收事件
    }
    if(event->button()==Qt::RightButton)    //若按下鍵為滑鼠右鍵
    {
        close();//退出
    }
}

定義滑鼠移動事件響應函數,實現拖拽功能:

//滑鼠移動響應函數
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {
        move(event->globalPos()-dragPosition);
        //event->accept();//接收事件
    }
}

4.4 main.cpp原始檔

程式碼如下:

#include "dialog.h"
#include <QApplication>
#include"digiclock.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    DigiClock clock;
    clock.show();
//    Dialog w;
//    w.show();
    return a.exec();
}

五、效果演示

到此這篇關於Qt實現電子時鐘的範例程式碼的文章就介紹到這了,更多相關Qt電子時鐘內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com