饼图
Pie Chart 饼图
饼图用于展示整体中的占比关系,适合构成分析、分类占用、资源分布和摘要型数据呈现。当前公开控件类为 UIGQOpenGLPieChart。
基类与类图
QOpenGLWidget
└─ UIGQChartBase
└─ UIGQOpenGLPieChart + IUIGQWidgetBase
数据结构
struct UIGQOpenGLPieChartSlice
{
QString name;
double value = 0.0;
QColor fillColor;
bool visible = true;
};
常用方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
setTitle(const QString& title) |
设置标题。 | title:标题文本。 |
void |
getTitle() |
读取标题。 | 无。 | QString |
setSlices(const QVector<UIGQOpenGLPieChartSlice>& slices) |
设置饼图切片。 | slices:切片数组。 |
void |
getSlices() |
读取饼图切片。 | 无。 | QVector<UIGQOpenGLPieChartSlice> |
clearSlices() |
清空所有切片。 | 无。 | void |
setInnerRadiusRatio(qreal ratio) |
设置内半径比例,0 为普通饼图,大于 0 为环图。 |
ratio:内半径比例。 |
void |
getInnerRadiusRatio() |
读取内半径比例。 | 无。 | qreal |
setAngleRange(qreal startAngleDegrees, qreal spanAngleDegrees) |
设置起始角度和绘制角度范围。 | startAngleDegrees:起始角度;spanAngleDegrees:角度跨度。 |
void |
getStartAngle() |
读取起始角度。 | 无。 | qreal |
getSpanAngle() |
读取角度跨度。 | 无。 | qreal |
setLeaderLineVisible(bool visible) |
控制引导线显示。 | visible:是否显示。 |
void |
getLeaderLineVisible() |
读取引导线显示状态。 | 无。 | bool |
setTooltipMode(UIGQChartTooltipMode mode) |
设置 tooltip 模式。 | mode:tooltip 模式枚举。 |
void |
getTooltipMode() |
读取 tooltip 模式。 | 无。 | UIGQChartTooltipMode |
setTooltipVisible(bool visible) |
设置 tooltip 是否显示。 | visible:是否显示。 |
void |
getTooltipVisible() |
读取 tooltip 显示状态。 | 无。 | bool |
setHoverEnabled(bool enabled) |
开启或关闭 hover 交互。 | enabled:是否启用 hover。 |
void |
getHoverEnabled() |
读取 hover 交互状态。 | 无。 | bool |
initDemoData() |
初始化演示数据。 | 无。 | void |
基础调用
using namespace UIGQtLib;
auto* chart = new UIGQOpenGLPieChart(parent);
chart->setTitle("Traffic Sources");
QVector<UIGQOpenGLPieChartSlice> slices;
UIGQOpenGLPieChartSlice search;
search.name = "Search";
search.value = 1048;
search.fillColor = QColor(35, 128, 224);
slices.append(search);
UIGQOpenGLPieChartSlice direct;
direct.name = "Direct";
direct.value = 735;
direct.fillColor = QColor(62, 180, 98);
slices.append(direct);
chart->setSlices(slices);
chart->setThemePreset(kChartThemeMacarons);
chart->setTooltipMode(kChartTooltipItem);
chart->setTooltipVisible(true);
chart->setHoverEnabled(true);
调用说明:
setSlices(...)是饼图的数据入口。- 每个
UIGQOpenGLPieChartSlice表示一个切片。 value用于计算占比,业务侧不需要提前计算百分比。
环图和角度控制
chart->setInnerRadiusRatio(0.55);
chart->setAngleRange(90.0, 360.0);
chart->setLeaderLineVisible(true);
调用说明:
setInnerRadiusRatio(0.55)将饼图变为环图。setAngleRange(...)可用于半圆图、仪表盘式占比或特殊视觉呈现。setLeaderLineVisible(true)适合标签较多的构成分析图。