QT day4

复制代码
#define WIDGET_H

#include <QWidget>
#include<QPaintEvent>
#include<QPainter>
#include<QTime>
#include<QTimer>
#include<QPen>
#include<QFont>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


    void paintEvent(QPaintEvent *event) override;

private slots:
    void timeout_slot();


private:

    Ui::Widget *ui;

    QTimer *timer;

    double h = 0;
    double m = 0;
    double s = 0;
};
#endif // WIDGET_H

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    timer = new QTimer(this);
    timer->start(1000);//一秒钟
    connect(timer, &QTimer::timeout, this, &Widget::timeout_slot);
}

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


void Widget::paintEvent(QPaintEvent *event)
{

    //实例化一个画家
       QPainter painter(this);

       painter.setRenderHint(QPainter::Antialiasing);
       //实例化一个画笔
       QPen pen;
       pen.setColor(QColor("black"));
       pen.setStyle(Qt::SolidLine);
       pen.setWidth(7);


       //表盘
       painter.setPen(pen);
       painter.translate(this->width()/2, this->height()/2);
       painter.drawEllipse(QPoint(0, 0), 200, 200);

       //刻度
       pen.setWidth(4);
       painter.setPen(pen);

       for(int i = 1; i <= 60; i++)
       {
           painter.save();
           painter.rotate(i*6);

           if(!(i % 5))
           {
               painter.drawLine(0, -200, 0, -175);
               painter.drawText(-20, -170, 40, 40, Qt::AlignHCenter | Qt::AlignTop, QString::number(i/5));
           }
           else
           {
               painter.drawLine(0, -200, 0, -190);
           }
           painter.restore();
       }

       //时针
       painter.save();
       pen.setColor(QColor("yellow"));
       pen.setStyle(Qt::SolidLine);
       pen.setWidth(6);

       painter.setPen(pen);
       painter.rotate(30*h);
       painter.drawLine(0, 0, 0, -60);
       painter.restore();

       //分针
       painter.save();
       pen.setColor(QColor("red"));
       pen.setStyle(Qt::SolidLine);
       pen.setWidth(3);

       painter.setPen(pen);
       painter.rotate(6*m);
       painter.drawLine(0, 0, 0, -100);
       painter.restore();

       //秒针
       painter.save();
       pen.setColor(QColor("blue"));
       pen.setStyle(Qt::SolidLine);
       pen.setWidth(1);

       painter.setPen(pen);
       painter.rotate(6*(s+1));
       painter.drawLine(0, 0, 0, -160);
       painter.restore();
       update();
   }

   void Widget::timeout_slot()
   {
       QTime time = QTime::currentTime();
       h = time.hour();
       m = time.minute();
       s = time.second();

   }
相关推荐
步行cgn19 分钟前
carList.forEach(System.out::println)
java·开发语言·mybatis
进击的程序猿~34 分钟前
Go 内存分配与垃圾回收源码深度学习手册
开发语言·后端·golang
geovindu1 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
Quz1 小时前
QML Tumbler 样式定制:渐变、高亮与 3D 滚轮效果
qt
并不喜欢吃鱼2 小时前
从零开始 C++------ 十六.深度拆解 C++ 智能指针:unique_ptr/shared_ptr/weak_ptr 底层模拟、内存泄漏根治
开发语言·c++
不相心 -w-2 小时前
Cmake的基础用法
linux·开发语言·c++
撑伞的鱼99372 小时前
C++开发用什么AI编程工具效果好?2026年实测横评(附选型指南)
开发语言·c++·ai编程·cursor
大数据张老师2 小时前
Typora 导出 Word 模版操作手册
开发语言·c#·word·typora
略略略咯咯2 小时前
stream流浅拷贝
开发语言·python
long3162 小时前
Java 团队入门到精通学习资料
java·开发语言