饼图

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) 适合标签较多的构成分析图。