天天看点

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();
}

           

继续阅读