Skip to content

EPieChart

组件简介

  • 饼图/环形图组件,展示数据占比;支持悬停高亮与百分比标签。
  • 兼容单系列简化格式 dataPoints,或使用 dataSeries 的首个系列。

基本用法

qml
import "components" as Components

Components.ETheme { id: theme }

// 使用简化数据点格式
Components.EPieChart {
    width: 600
    height: 500

    title: "Pie Chart"
    subtitle: "数据占比分析"

    dataPoints: [
        { label: "Category A", value: 30 },
        { label: "Category B", value: 20 },
        { label: "Category C", value: 15 },
        { label: "Category D", value: 25 },
        { label: "Category E", value: 10 }
    ]

    // 环形图:设置内半径
    innerRadius: 60

    onPointClicked: (i, point) => console.log("点击:", i, point.label, point.value)
    onPointHovered: (i, point) => console.log("悬停:", i, point.label)
}

属性列表

属性名类型默认值描述
titlestring"Pie Chart"图表标题
subtitlestring"数据占比分析"副标题
dataSeriesvariant[{ name, data: [{label,value,color}] }]数据系列,组件仅使用首个系列
dataPointsvariant[]简化数据(单系列),元素为 {label,value,color?}
innerRadiusreal0内半径,大于 0 时显示为环形图
showLabelsbooltrue是否在扇区显示百分比标签
tooltipColorcolortheme.primaryColor提示框背景色
tooltipTextColorcolortheme.textColor提示框文字颜色
hoveredIndexint-1当前悬停的扇区索引
backgroundVisiblebooltrue是否显示背景
radiusreal20外层圆角
fontSizeint14文本像素大小
titleFontSizeint18标题大小
subtitleFontSizeint12副标题大小
backgroundColorcolortheme.secondaryColor背景颜色(同时用于扇区间隔线)
textColorcolortheme.textColor文本颜色
subtitleColorcolorQt.darker(theme.textColor, 1.5)副标题颜色
shadowEnabledbooltrue是否启用阴影
shadowColorcolortheme.shadowColor阴影颜色
chartPaddingint20图表内边距
topPaddingint90上边距(标题区)
totalValuereal动态计算总值,只读

信号列表

信号名参数描述
pointClicked(index, dataPoint)int, variant点击某扇区时触发
pointHovered(index, dataPoint)int, variant悬停于某扇区时触发

扩展示例

使用数据系列

qml
Components.EPieChart {
    width: 520
    height: 420
    dataSeries: [
        {
            name: "Distribution",
            data: [
                { label: "A", value: 30, color: "#FF6384" },
                { label: "B", value: 20, color: "#36A2EB" },
                { label: "C", value: 15, color: "#FFCE56" },
                { label: "D", value: 25, color: "#4BC0C0" },
                { label: "E", value: 10, color: "#9966FF" }
            ]
        }
    ]
}

环形图与标签

qml
Components.EPieChart {
    width: 520
    height: 420
    innerRadius: 80
    showLabels: true
    dataPoints: [
        { label: "Cat A", value: 5 },
        { label: "Cat B", value: 3 },
        { label: "Cat C", value: 2 }
    ]
}

注意事项

  • 当同时设置 dataPointsdataSeries 时,组件优先使用 dataPoints
  • 若数据项未指定 color,组件会自动分配默认色板。
  • 当某扇区占比过小(角度很小)时,可能不显示百分比标签。