张家界市网站建设_网站建设公司_服务器维护_seo优化
2026/1/8 6:58:12 网站建设 项目流程

定义时钟类AnalogClock.h

#ifndef ANALOGCLOCK_H #define ANALOGCLOCK_H #include <QWidget> class AnalogClock : public QWidget { Q_OBJECT public: AnalogClock(QWidget *parent = nullptr); ~AnalogClock(); protected: void paintEvent(QPaintEvent *event); }; #endif // ANALOGCLOCK_H

实现时钟类

#include "analogclock.h" #include<QTimer> #include <QTime> #include <QPainter> AnalogClock::AnalogClock(QWidget *parent) : QWidget(parent) { QTimer *timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(update())); timer->start(1000); setWindowTitle(tr("Analog Clock")); resize(200,200); } AnalogClock::~AnalogClock() { } void AnalogClock::paintEvent(QPaintEvent *event) { static const QPoint hourHand[3] = { QPoint(7,8), QPoint(-7,8), QPoint(0,-40) }; static const QPoint minuteHand[3] = { QPoint(7,8), QPoint(-7,8), QPoint(0,-70) }; QColor hourColor(127,0,127); QColor minuteColor(0,127,127,191); int side = qMin(width(),height()); QTime time = QTime::currentTime(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.translate(width()/2,height()/2); painter.scale(side / 200.0,side / 200.0); painter.setPen(Qt::NoPen); painter.setBrush(hourColor); painter.save(); painter.rotate(30.0*((time.hour() + time.minute() / 60.0))); painter.drawConvexPolygon(hourHand,3); painter.restore(); painter.setPen(hourColor); for(int i = 0;i < 12;i++){ painter.drawLine(88,0,96,0); painter.rotate(30.0); } painter.setPen(Qt::NoPen); painter.setBrush(minuteColor); painter.save(); painter.rotate(6.0 * (time.minute() + time.second() / 60.0)); painter.drawConvexPolygon(minuteHand,3); painter.restore(); painter.setPen(minuteColor); for(int j = 0;j < 60;j++){ if((j % 5) != 0) painter.drawLine(92,0,96,0); painter.rotate(6.0); } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询