天天看點

Qt電子時鐘

預覽效果:
Qt電子時鐘
左鍵點選不松手移動,右鍵點選關閉

第一步建立項目

Qt電子時鐘
Qt電子時鐘
Qt電子時鐘

右鍵點選項目添加新檔案

Qt電子時鐘

選擇C++類

Qt電子時鐘

該類繼承自 QLCDNumber

Qt電子時鐘

clock.h代碼實作:

#ifndef CLOCK_H
#define CLOCK_H

#include <QDialog>

class Clock : public QDialog
{
    Q_OBJECT

public:
    Clock(QWidget *parent = nullptr);
    ~Clock();
};
#endif // CLOCK_H

           

clock.cpp代碼實作:

#include "clock.h"

Clock::Clock(QWidget *parent)
    : QDialog(parent)
{
}

Clock::~Clock()
{
}


           

DigitalClock.h代碼實作

#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H


#include <QLCDNumber>

class DigitalClock : public QLCDNumber
{
    Q_OBJECT
public:
    DigitalClock(QWidget *parent = 0);

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);

private slots:
    void showTime();

private:
    QPoint m_dragPosition;
    bool m_showColon;
};

#endif // DIGITALCLOCK_H

           

DigitalClock.cpp代碼實作

#include "digitalclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>

DigitalClock::DigitalClock(QWidget *parent):QLCDNumber(parent)
{
    QPalette p = palette();//擷取目前調色闆
    p.setColor(QPalette::Window,Qt::blue);   //對窗體設定顔色
    setPalette(p);      //設定調色闆

    //無邊框風格
    setWindowFlags(Qt::FramelessWindowHint);
    setWindowOpacity(0.5);      //窗體透明度


    QTimer *timer = new QTimer(this);
    connect(timer,&QTimer::timeout,this,&DigitalClock::showTime);
    timer->start(1000);

    resize(150,60);
    m_showColon = true;
}

void DigitalClock::mousePressEvent(QMouseEvent *event)
{
    //左鍵
    if(event->button() == Qt::LeftButton){
        //滑鼠相對螢幕左上角的位置               時鐘窗體左上角位置
        m_dragPosition = event->globalPos()-frameGeometry().topLeft();
        event->accept();
    }

    //右鍵關閉
    if(event->button() == Qt::RightButton){
       close();
    }
}

void DigitalClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons() & Qt::LeftButton){
        move(event->globalPos()-m_dragPosition);
        event->accept();
    }
}

void DigitalClock::showTime()
{
    //目前時間
    QTime time = QTime::currentTime();
    QString strTimer = time.toString("hh:mm");
    if(m_showColon){
        strTimer[2] = ':';
    }else{
        strTimer[2] = ' ';
    }

    //顯示
    display(strTimer);

    m_showColon = !m_showColon;

}

           

main.cpp代碼實作

#include "clock.h"

#include <QApplication>

#include "digitalclock.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DigitalClock w;
    w.show();
    return a.exec();
}

           

繼續閱讀