DAY53

clock.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPaintEvent>
#include <QDebug>
#include <QPainter>
#include <QTimerEvent>
#include <QTimer>
#include <QDateTime>
#include <QIcon>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void timerEvent(QTimerEvent *event) override;
    void paintEvent(QPaintEvent *event) override;

private:
    Ui::Widget *ui;
    int time_id;
    QTimer *timer;
    int hh = 0, mm = 0, ss = 0;
};
#endif // WIDGET_H

clock.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    time_id = this->startTimer(1000);
    this->setWindowTitle("时钟");

}

Widget::~Widget()
{
    delete ui;
}



void Widget::paintEvent(QPaintEvent *event)
{
    QPainter p1(this);
    QPen pen;
    pen.setColor(QColor("red"));
    pen.setStyle(Qt::SolidLine);
    pen.setWidth(3);
    p1.setPen(pen);

    p1.translate(this->width()/2,this->height()/2);
    p1.setBrush(QBrush(QColor("pink")));
    p1.drawEllipse(QPointF(0,0),200,200);
    p1.setPen(QColor("pink"));
    for(int i = 0; i < 60; i++)
    {
        p1.drawLine(200,0,190,0);
        p1.rotate(6);
    }

    p1.setFont(QFont("隶书",20));
    for(int i = 1; i <= 12; i++)
    {
        p1.rotate(30);
        p1.drawLine(0,-200,0,-180);
        p1.drawText(-10,-155,QString("%1").arg(i));

        QPainter p2(this);
        p2.setPen(QColor("brown"));
        p2.translate(this->width()/2, this->height()/2);
        p2.rotate(-90);
        //画笔2
        QPen pen2;
        pen2.setWidth(3);
        pen2.setColor(QColor("red"));
        p2.setPen(pen2);


        //秒针
        p2.rotate(ss*6);
        p2.drawLine(0,0,150,0);


        //分针
        pen2.setColor(QColor("black"));
        pen2.setWidth(5);
        p2.setPen(pen2);
        p2.rotate(-ss*6);
        p2.rotate(mm*6+ss*6/60);
        p2.drawLine(0,0, 150,0);



        //时针
        p2.rotate(-mm*6-ss*6/60);
        p2.rotate(hh*30+mm*6/12+ss*6/60/12);
        p2.drawLine(0,0, 100,0);
    }


}


void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId()==time_id)
        {
            //数字显示当前时间
            QDateTime sysDateTime=QDateTime::currentDateTime();
            //讲QTime类对象转化为字符串
            QString t=sysDateTime.toString("hh:mm:ss");
            //展示到ui界面
            ui->lab->setText(t);
            //获取时分秒
            QStringList list =t.split(":");
            hh = list[0].toUInt();
            mm = list[1].toUInt();
            ss = list[2].toUInt();
            update();
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

也许t

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值