Qt自定义Widget之仪表盘

栏目: IT技术 · 发布时间: 4年前

内容简介:上次和大家分享了使用Qml制作的仪表盘的过程,这次和大家分享下

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看 或点个赞,感谢~

上次和大家分享了使用Qml制作的仪表盘的过程,这次和大家分享下 Qt 的自定义控件过程。

Qt自定义Widget之仪表盘

效果图如上,有图有真相啊。

程序源码来自B站上,几乎没做任何修改,这里主要说下自定义控件的流程。

程序源码: https://github.com/xieguiproject/GCT.git

B 站视频地址: https://www.bilibili.com/video/BV194411u7f1

以前一篇关于一些2D绘图的文章:Qt 2D 绘图入门

首先Qt已经为我们提供了众多丰富且易用的基础控件,但是很多情况下我们需要实现自己的设计形态,如上面的仪表盘。这时候就需要自定义控件了,而且实际使用中还会用到样式表的。本次主要简述下自定义仪表盘的流程。

一、仪表盘自身工作流程

仪表盘控件继承自QWidget,使用定时器以100ms的频率触发painEvent绘图事件。

绘制控件程序如下:

//绘制控件

void Dashboard1::drawDashBoardWiget(QPainter *painter)

{

//全局参数初始化

qParmInit();

//设置透明

setOtherBackgroud(true,painter);

//绘制表盘

drawDashBoard(painter);

//绘制刻度尺

drawDivideRule(painter);

//绘制指针

drawDishBoardPointer(painter);

//绘制表盘文字

drawDashBoardText(painter);

}

刻度的位置通过setValue()方法来调整。

1. drawDashBoard()

只保留绘制表盘部分代码,如图,标出了4个数字,即是绘制了4个圆,程序中则是调用了4次drawEllipse(绘制椭圆)进行绘制。

Qt自定义Widget之仪表盘

2. drawDivideRule()

添加绘制刻线部分程序,效果如下。

程序中计算的方法就不做介绍了, fMaxDivide 表示大刻度线的个数, fMinDivide 表示小刻度线的个数。

Qt自定义Widget之仪表盘

3. drawDivideRule()

绘制刻度盘指针

通过绘制一个多边形与一个椭圆组合而成。

Qt自定义Widget之仪表盘

4. drawDashBoardText()

绘制表盘上的文本,效果如下

Qt自定义Widget之仪表盘

二、关于程序对自定义控件的调用

从github上下载下来的程序是通过提升控件的方式调用的。具体就是先拖一个Widget,然后右键提升,Qt会自动识别程序中已包含的自定义控件的。在主UI中可直接访问被提升过的控件的方法。

第二种方法就是通过布局来addWidget。效果如下

Qt自定义Widget之仪表盘

三、 小结

虽然不清楚刻度线与刻度指针的具体计算方式,但是我们可以快速的构建起一个项目,这应该是目前首要的任务。

效果视频如下:

第二个是之前qml制作的仪表盘效果。

修改过的完整工程可在公众号后台留言获取。

Qt自定义Widget之仪表盘


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Database Design and Implementation

Database Design and Implementation

Edward Sciore / Wiley / 2008-10-24 / 1261.00 元

* Covering the traditional database system concepts from a systems perspective, this book addresses the functionality that database systems provide as well as what algorithms and design decisions will......一起来看看 《Database Design and Implementation》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具