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

QT自定义控件0-360°刻度尺

支持0到360°,360到0°的过度。
直接上代码,可以直接用,使用的paintevent事件实现的,没啥好讲的。
请添加图片描述
.cpp

void Widget::drawCourse(QPainter& p,QPen pen,QFont font)
{double currentNumber = m_ang;p.setBrush(Qt::black);p.drawRect(rect());//航向刻度图pen.setColor("#ffffff");pen.setWidth(2);p.setPen(pen);font.setPointSize(20);p.setFont(font);p.drawLine(0,0,width(),0);int mainScale = 360;double movePos = currentNumber*35-width()/2;//360前半截for (int i = 0; i < mainScale+1; ++i) {if (i%5 == 0){pen.setWidth(2);p.setPen(pen);p.drawLine(0+i*35-movePos,0,0+i*35-movePos,26);p.drawText(0+i*35-30-movePos,33,60,30,Qt::AlignCenter,QString::number(i%360));}else{pen.setWidth(1);p.setPen(pen);p.drawLine(0+i*35-movePos,0,0+i*35-movePos,20);}}//0后半截,360前半截double startPt = 0;double showSpan = width()/35.00;if (currentNumber > 360 - showSpan || currentNumber < 360 - showSpan){if (currentNumber > 360 - showSpan)startPt = (360 - currentNumber + showSpan/2)*35;elsestartPt = (showSpan/2 - currentNumber)*35 - 35*mainScale;for (int i = 0; i < mainScale+1; ++i) {if (i%5 == 0){pen.setWidth(2);p.setPen(pen);p.drawLine(0+i*35+startPt,0,0+i*35+startPt,26);p.drawText(0+i*35-30+startPt,33,60,30,Qt::AlignCenter,QString::number(i%360));}else{pen.setWidth(1);p.setPen(pen);p.drawLine(0+i*35+startPt,0,0+i*35+startPt,20);}}}//航向中线p.setPen(QPen(QColor("#009af7")));p.setBrush(QBrush(QColor("#009af7")));QPolygon pol;pol<<QPoint(width()/2,72)<<QPoint(width()/2-17,103)<<QPoint(width()/2+16,103);p.drawPolygon(pol);
}
http://www.lryc.cn/news/283584.html

相关文章:

  • c语言0基础笔记
  • Vue 中 Element UI 的 el-table 组件实现动态表头和内容
  • 安装sqlserver后—无法连接到 127.0.0.1,1433\sqlexpress
  • Python JSON解析校验格式,输出错误信息的工具
  • 物联网网关与plc怎么连接?
  • HANA:存储过程(Procedures) DEBUG
  • Oracle行转列函数,列转行函数
  • 线程同步--生产者消费者模型
  • React hook+AntD pro实现Form表单的二次封装
  • python异步切片下载文件(内置redis获取任务 mongo更新任务状态等)
  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(10)-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 阿里云云原生弹性方案:用弹性解决集群资源利用率难题
  • Spring-BeanPostProcessor PostConstruct init InitializingBean 执行顺序
  • 【算法】递归
  • DC-1靶机刷题记录
  • rust跟我学七:获取外网IP地址
  • 华为:交换机忘记console密码重置
  • 2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 模块一
  • Go 中 slice 的 In 功能实现探索
  • pyDAL一个python的ORM(终) pyDAL的一些性能优化
  • springboot log4j配置xml实例说明
  • VsCode重新安装需要配机的ESLint和 Prettier - Code formatter 配置
  • 录屏功能怎么打开?简单操作,一学就会!
  • 小程序显示兼容处理,home键处理
  • 【java八股文】之JVM基础篇
  • 2024美赛数学建模思路 - 案例:异常检测
  • 【EI会议征稿通知】2024年通信技术与软件工程国际学术会议 (CTSE 2024)
  • Js面试之作用域与闭包
  • Go 爬虫之 colly 从入门到不放弃指南
  • Ceph分布式存储(1)