当前位置: 首页 > news >正文

用QT绘制一个简单的时钟

定义时钟类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); } }
http://www.jsqmd.com/news/213624/

相关文章:

  • NBTExplorer:解锁我的世界无限可能的终极数据编辑神器
  • MGeo在移动通信基站管理中的应用
  • PPTTimer:专业演讲时间管理系统
  • 自动化数据管道:MGeo集成ETL流程实现定时匹配
  • Scroll Reverser终极指南:告别Mac滚动方向混乱的困扰
  • 5步彻底解决Zotero文献库重复条目:智能合并插件完全指南
  • Applite终极指南:快速掌握macOS软件管理神器
  • 如何用MGeo提升城市公园游客服务精准度
  • 如何快速解锁网易云NCM文件:ncmdumpGUI一站式解决方案
  • 如何彻底解决魔兽争霸3在现代系统上的兼容性问题?
  • VHS_VideoCombine节点消失?5分钟教你重新找回视频合成核心功能
  • Z-Image-Turbo项目地址汇总:ModelScope与GitHub同步更新
  • 如何用MGeo提升在线教育平台学员信息质量
  • Scroll Reverser终极配置指南:让Mac多设备滚动体验完美统一
  • 公共安全预警:MGeo关联重点人员活动轨迹
  • Comics Downloader:终极漫画下载工具完整使用指南
  • MGeo推理环境隔离实践:Conda环境管理技巧
  • UniversalUnityDemosaics:Unity游戏视觉优化终极解决方案
  • 企业信息安全考量:MGeo本地部署避免数据外泄风险
  • AMD Ryzen调优终极指南:从新手到专家的完整实战手册
  • Windows驱动清理终极指南:使用Driver Store Explorer释放磁盘空间
  • Mac滚动方向终极解决方案:Scroll Reverser让你的手腕不再抗议
  • GetQzonehistory:QQ空间历史说说终极备份方案
  • Gerbv终极指南:如何用开源工具完美查看PCB设计文件
  • 终极指南:3步轻松备份QQ空间完整历史,永久珍藏青春回忆
  • 地产大数据清洗:MGeo识别楼盘别名与曾用名统一编码
  • MGeo模型对停车场出入口地址的识别精度
  • Unity3D马赛克移除终极解决方案:BepInEx插件高效指南
  • Scroll Reverser完整使用指南:彻底解决Mac滚动方向混乱问题
  • 终极PPT计时器:3分钟掌握精准演讲时间管理术