AnalogClock_QPainter.h文件代码


#pragma once#include <QtWidgets/QWidget>
#include "ui_AnalogClock_QPainter.h"class AnalogClock_QPainter : public QWidget
{Q_OBJECTpublic:AnalogClock_QPainter(QWidget *parent = Q_NULLPTR);private:Ui::AnalogClock_QPainterClass ui;protected:void paintEvent(QPaintEvent* event) override;
};

AnalogClock_QPainter.cpp文件代码

#include "AnalogClock_QPainter.h"
#include <QTimer>
#include <QTime>
#include <QPainter>AnalogClock_QPainter::AnalogClock_QPainter(QWidget *parent): QWidget(parent)
{ui.setupUi(this);QTimer* timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(update()));timer->start(1000);setWindowIconText(tr("Analog Clock"));resize(200, 200);}void AnalogClock_QPainter::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);//旋转时以(width() / 2, height() / 2)为中心painter.scale(side / 200.0, side / 200.0);//对画面进行缩放//绘画时针painter.setPen(Qt::NoPen);painter.setBrush(hourColor);painter.save();//保存当前painter状态,必须和restore()一起使用painter.rotate(30.0*(time.hour() + time.minute() / 60.0));painter.drawConvexPolygon(hourHand, 3);painter.restore();//12个小时线段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();//60个分针线段painter.setPen(minuteColor);for (int j = 0; j < 60;++j){//小时分段处不画分针线段if ((j % 5)!=0){painter.drawLine(92, 0, 96, 0);}painter.rotate(6.0);}//秒针/static const QPoint secondHand[3] = {QPoint(7, 8),QPoint(-7, 8),QPoint(0, -85)};QColor secondColor(255, 255, 0);painter.setPen(Qt::NoPen);painter.setBrush(secondColor);painter.save();painter.rotate(6.0*time.second());painter.drawConvexPolygon(secondHand, 3);painter.restore();///}

Qt自带例子:AnalogClock ,增加了秒针相关推荐

  1. linux qt自带例子无法,在Qt Creator中,错过了一些例子

    在Arch Linux中安装了Qt Creator 2.8 使用pacman安装qt5- *(*作为每个相关包) 存储库中没有示例,因此我使用了AUR,qt5示例中的示例 示例安装在/usr/shar ...

  2. linux qt自带例子无法,出现Qt_5未在文件libQt5Widgets.so.5中定义导致软件无法使用的解决...

    有些用户在升级Deepin 20.2系统后因为Qt_5未在文件libQt5Widgets.so.5中定义导致软件无法使用,产生错误如symbol _ZN9QListView11eventFilterE ...

  3. Qt Mediaplayer videoplayer 例子工程 Media Player Example 应用过程中出现的问题(二)qslider鼠标点击跳转

    Qt Mediaplayer videoplayer 例子工程 Media Player Example 应用过程中出现的问题(二)qslider鼠标点击跳转 转载请标明出处 Qt例子工程 Media ...

  4. Linux下不使用qt自带sleep,Linux下Qt多线程编程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...

  5. Qt调用word 例子

    Qt调用word 例子 Getting Microsoft Word Object to SaveAs #include <QtGui> #include <QAxObject> ...

  6. TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作

    TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作 ...

  7. TensorFlow自带例子

    TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作摄像头 ...

  8. Qt 实现带阴影 无边框的QMessageBox

    Qt 实现带阴影的QMessagebox 在实际项目里面使用到了QMessageBox做一个弹窗,最开始是样式不是需要的样式,就去找了一下QMessageBox的样式表,一般来说可以使用findChi ...

  9. 串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能

    串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能 使用说明介绍 1.功能介绍: 采用Qt编写的串口调试助手工具,功能齐全,除了具备十六进制收发及文件保存等基本功能外,还具有以下功能 ...

最新文章

  1. 模拟jQuery ajax服务器端与客户端通信
  2. 谣言止于智者:基于深度强化学习的谣言早期检测模型
  3. kafka删除主题数据和删除主题
  4. 搭建git服务器(权限管理)
  5. Andorid之jni里面崩溃然后用errno分析结果解决问题
  6. 华为手机媒体音量自动静音_华为手机还能自动清理垃圾,怪不得手机越用越流畅,学到了...
  7. 程序员修神之路:问世间异步为何物?
  8. 巩固shell基础知识
  9. Linux下编写简易取号机系统,linux socket编程问题,下面是我做的一个简单的模拟银行排队叫号系统。...
  10. studio3t到期解决办法
  11. 学习July博文总结——支持向量机(SVM)的深入理解(下)
  12. 【MFC】多国语言工具栏
  13. SAP文件上传服务器并下载
  14. microsoft 365 E5申请过程收不到验证码的解决方案
  15. 小偷电竞酒店换显卡被抓!网吧/电竞酒店如何防盗?
  16. Java算法_优先队列和PriorityQueue——HDU 1873:看病要排队
  17. 智慧养老、养老运营服务平台、陪护服务、养老院、托养、敬老院、健康管理、日常护理、残疾人管理、线下援助服务、助餐、助洁、助医、生活照料、养生保健、社区养老、居家养老、服务回访、健康数据、Axure原型
  18. TLE两行数与轨道六根数转换
  19. Java SE 8: Lambda Quick Start
  20. SAP CO模块 KSV5 费用分摊分配解析

热门文章

  1. 林仕鼎[百度云首席架构师]:架构设计的一些思考
  2. Uniapp+Nodejs实现外卖App项目1-项目介绍
  3. Vue | 18.本地应用 - 小黑记事本
  4. 【愚公系列】2023年04月 攻防世界-MOBILE(gogogo)
  5. MathJax 规则
  6. 理光打印机Ricoh_MP_C2003_C2503_Pcl6祥闰内部打印机安装使用教程
  7. 百度网盘---活着的最后一块网络硬盘 育网校园云盘-教育行业最好用的网络硬盘
  8. 2009刀片服务器导购系列文章之戴尔篇
  9. Allegro中设置开窗的方法 Allegro中设置开窗的方法
  10. macOS 使用 QuickLook 预览高亮查看任意代码源文件