qt绘制一圈圆_Qt编写自定义控件41-自定义环形图

本文介绍了Qt环境下自定义环形图控件的实现,包括外圆和内圆两层,支持鼠标悬停高亮显示,具有标题、图例等功能。控件源码清晰,可设置各种颜色、文字等属性,适用于多种场景。
摘要由CSDN通过智能技术生成

一、前言

自定义环形图控件类似于自定义饼状图控件,也是提供一个饼图区域展示占比,其实核心都是根据自动计算到的百分比绘制饼图区域。当前环形图控件模仿的是echart中的环形图控件,提供双层环形图,有一层外圈的环形图,还有一层里边的饼状图,相当于一个控件就可以表示两种类型的占比,这样涵盖的信息量更大,而且提供了鼠标移上去自动突出显示的功能,下面的图例也跟着加粗高亮显示,非常直观,类似的控件在很多web项目中大量运用。

本控件的难点并不是绘制环形或者饼图区域,初学者都会,难点在如何自动精准计算鼠标所在区域,然后高亮突出显示,用的是QPainterPath的contains方法判断当前鼠标在哪个区域,需要在绘制的时候记住该饼图区域的QPainterPath,然后在mouseMoveEvent中判断,需要开启鼠标捕捉。控件原作者雨田哥(https://blog.csdn.net/ly305750665)

二、实现的功能

1:可设置是否显示标题+标题文字+标题高度+标题字号

2:可设置是否显示图例+图例高度+图例字号

3:可设置背景颜色+文字颜色+高亮颜色+标识颜色

4:可设置外圆颜色+中间圆颜色+内圆颜色

5:可设置外圆数据集合+内圆数据集合

6:鼠标悬停突出显示区域并高亮显示文字

7:每个区域都可设置对应的颜色+文字描述+百分比

8:支持直接字符串设置文字集合和百分比集合

三、效果图

四、头文件代码

#ifndef CUSTOMRING_H

#define CUSTOMRING_H

/**

* 自定义环形图控件 整理:feiyangqingyun(QQ:517216493) 2019-7-28

* 原作者:雨田哥(QQ:3246214072)

* 1:可设置是否显示标题+标题文字+标题高度+标题字号

* 2:可设置是否显示图例+图例高度+图例字号

* 3:可设置背景颜色+文字颜色+高亮颜色+标识颜色

* 4:可设置外圆颜色+中间圆颜色+内圆颜色

* 5:可设置外圆数据集合+内圆数据集合

* 6:鼠标悬停突出显示区域并高亮显示文字

* 7:每个区域都可设置对应的颜色+文字描述+百分比

* 8:支持直接字符串设置文字集合和百分比集合

*/

#include

#ifdef quc

#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))

#include

#else

#include

#endif

class QDESIGNER_WIDGET_EXPORT CustomRing : public QWidget

#else

class CustomRing : public QWidget

#endif

{

Q_OBJECT

Q_PROPERTY(bool showTitle READ getShowTitle WRITE setShowTitle)

Q_PROPERTY(int titleHeight READ getTitleHeight WRITE setTitleHeight)

Q_PROPERTY(int titleFontSize READ getTitleFontSize WRITE setTitleFontSize)

Q_PROPERTY(QString title READ getTitle WRITE setTitle)

Q_PROPERTY(bool showLegend READ getShowLegend WRITE setShowLegend)

Q_PROPERTY(int legendHeight READ getLegendHeight WRITE setLegen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值