Qt | 实现一个简单的可以转动的仪表盘

这篇具有很好参考价值的文章主要介绍了Qt | 实现一个简单的可以转动的仪表盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:vs2017+Qt5.14.2


效果图:

Qt | 实现一个简单的可以转动的仪表盘


准备工作:
效果图中的可以转动的仪表盘效果分为三个部分:

  1. 背景图(就是带去掉中间白色原点,去掉中间蓝色指针省下的部分);
  2. 指针图片(中间蓝色的指针部分,不包括指针上的白色圆点);
  3. 原点图片(中间白色的圆点)

原理:
在paintEvent()中绘制这三张图片。当需要旋转指针的角度时,改变指针图片的角度,再调用update()函数重新绘制显示就可以了。


具体实现:
1. 定义旋转角度成员变量:int m_nValue;//指针旋转角度。
2. 重载paintEvent()函数。
3. 加载三张图片。
QPixmap img = QPixmap(":/image/banhuan.png");
QPixmap needle = QPixmap(":/image/zhizhen.png");
QPixmap overlay = QPixmap(":/image/zhizhenyuan.png");
4. 在paintEvent()函数中进行绘制。

void CDialBox::paintEvent(QPaintEvent *event)
{
     QPainter painter(this);
     painter.save();//保存
     painter.setRenderHint(QPainter::SmoothPixmapTransform, true); //平滑像素图,防止图形走样
     painter.translate(this->width() / 2, this->height() / 2); // 原点定位在中间位置
     // 背景图
     painter.drawPixmap(-img->width() / 2, -img->height() / 2, img);
     // 指针图
     painter.rotate(m_nValue);//设置旋转角度
     painter.drawPixmap(-needle.width() / 2, -needle.height() + needle.width() / 2, needle);
     //原点图
     painter.drawPixmap(-overlay.width() / 2, -overlay.height() / 2, overlay);
     painter.restore();//恢复 
}
  • 其中:painter.save();painter.restore();为保存QPainter当前的状态和恢复QPainter当前的状态。这里使用这两个函数主要是服务于painter.translate()函数的。
  • 因为painter.translate(x, y)函数用来设置当前QPainter的相对坐标。正常QPainter的坐标原点(0,0)在屏幕的左上角,调用painter.translate(x, y)函数,会将原点设置为指定的(x,y)的位置,也就是说屏幕的(x,y)为QPainter画布的(0,0)位置。
  • 为了防止画布上的图片有缩放或拉伸导致的图像走形,可以调用painter.setRenderHint(QPainter::SmoothPixmapTransform, true);来进行平滑设置。
  • 在绘制图形时顺序很重要,先调用painter.drawPixmap()函数进行绘制的图形在最下面,后面调用的会覆盖在之前的图形之上,所以根据效果图,应该先绘制背景图片,再绘制指针图片,最后绘制原点图片。
  • 因为此时原点(0,0)的位置在效果图的最中间位置,所以绘制背景图时的(x,y)应该为(-img->width() / 2, -img->height() / 2);
  • 指针图的X值为负的宽度的一半,Y值为负的高度的值加上宽度的一半。 调用painter.rotate()函数是用来将画布以坐标原点为中心进行顺时针旋转指定的角度。所以定义一个成员变量来给这个角度进行传值。
    原点图的(x,y)应该为(-overlay.width() / 2, -overlay.height() / 2);


5.改变指针角度
定义一个改变指针角度值的函数void valueChanged(int value);

void CDialBox::valueChanged(int value) 
{
     m_nValue = value;
     update();
}

设置角度的值,调用update()函数进行刷新。调用update();函数会执行paintEvent();

 文章来源地址https://www.toymoban.com/news/detail-431140.html

到了这里,关于Qt | 实现一个简单的可以转动的仪表盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt+C++自定义控件仪表盘动画仿真

    程序示例精选 Qt+C++自定义控件仪表盘动画仿真 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++自定义控件仪表盘动画仿真编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、使用步骤  

    2024年02月12日
    浏览(48)
  • 【监控仪表系统】Grafana 中文入门教程 | 构建你的第一个仪表盘

    Grafana 读音:/grəˈfɑːnˌɑː/ 在大厂工作久了,时常对一些工具的存在觉得理所当然。 比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存?点下鼠标就可以要到几十个配置好的 Redis 结点。 最省心的是,这些工具都已经根据工作流

    2024年02月02日
    浏览(44)
  • [译]使用Python和Dash 创建一个仪表盘(上)

    在数据科学和分析的领域,数据能力的释放不仅是通过提取见解的方式, 同时也要能通过有效的方式来传达见解.这就是数据可视化发挥见解的地方. 数据可视化是信息和数据的可视化呈现. 它使用可视化元素,如图表、图形、地图,使其更容易看懂原始数据中的模式、趋势及异常值

    2024年02月16日
    浏览(41)
  • ChatGPT实现仪表盘生成

    Grafana是开源社区最流行的数据可视化软件,一定程度上也和 superset 一起被视为 tableau 等商业 BI 的开源替代品,很多IT 团队、科研团队,都会使用 Grafana 来做数据监控、挖掘分析。Grafana社区也有很多贡献者,在 github 上分享自己针对不同场景制作的数据分析仪表盘效果和配置

    2024年02月02日
    浏览(36)
  • 微信小程序实现带刻度简易仪表盘

    实现如图样式的仪表盘,要求分数向下取整、进度精确展示。 1、首先画出环形进度条,通过大圆包小圆的方式实现:大圆(circle1)背景浅色,小圆(circle2)背景白色 2、在小圆内部画刻度,根据UI图确认一共有12个刻度,其中长短刻度交叉显示(如图), 定义一个长度为1

    2024年02月11日
    浏览(40)
  • 界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

    DevExpress WPF Gauge(仪表)控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器,同时还具有最终用户交互性的集成支持。 P.S :DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能

    2024年02月06日
    浏览(51)
  • 如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

    本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘,并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等,并且拥有API接口。 DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS 和私人服务器(比如说N

    2024年03月16日
    浏览(50)
  • echarts绘制仪表盘

     代码展示:

    2024年02月13日
    浏览(45)
  • Grafana增加仪表盘

    grafana 是一款采用Go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。 Grafana下载地址:https://grafana.com/grafana/download Grafana仪表盘模板下载地址:https://grafana.com/grafa

    2024年02月04日
    浏览(46)
  • 新版Grafana仪表盘

    一 Grafana 是什么         Grafana 是一个开源的指标量监测和可视化工具,常用于展示基础设施的时序数据和应用 程序运行分析。         官网指路: https://grafana.com/         与前文相关的两个概念:         1)数据源(Datasource):定义了将用方式来查询数据展

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包