本页内容

PieSeries QML Type

以饼图形式展示数据。更多...

Import Statement: import QtGraphs
In C++: QPieSeries
Inherits:

AbstractSeries

属性

信号

方法

  • PieSlice append(string label, real value)
  • PieSlice at(int index)
  • void clear()
  • PieSlice find(string label)
  • bool remove(PieSlice slice)
  • bool remove(int index)
  • void removeMultiple(int index, int count)
  • bool replace(list<PieSlice> slices)
  • bool replace(PieSlice oldSlice, PieSlice newSlice)
  • bool replace(int index, PieSlice slice)
  • bool take(PieSlice slice)

详细说明

饼图系列由使用PieSlice 类型定义的扇区组成。扇区可以包含任意数值,因为PieSeries类型会计算每个扇区相对于该系列所有扇区总和的百分比,以此确定该扇区在图表中的实际大小。

饼图在图表中的大小和位置通过 0.0 到 1.0 之间的相对值进行控制。这些值与实际图表矩形相关。

默认情况下,饼图被定义为完整饼图。可以通过为系列设置起始角度和角度范围来创建部分饼图。完整饼图为 360 度,其中 0 度位于 12 点钟方向。

以下 QML 示例演示了如何创建一个简单的饼图。

import QtQuick
import QtGraphs

Item {
    id: mainView
    width: 1280
    height: 720

    GraphsView {
        anchors.fill: parent
        theme: GraphsTheme {
             colorScheme: GraphsTheme.ColorScheme.Dark
             theme: GraphsTheme.Theme.QtGreen
        }
        PieSeries {
            id: pieSeries
            PieSlice {
                value: 1
            }
            PieSlice {
                value: 2
            }
        }
    }
}

另请参阅 PieSlice 和GraphsView 。

属性文档

angleSpanLabelVisibility : enumeration [since 6.10]

标签可见性模式。

该模式用于确定当标签位于通过angleSpanVisibleLimit 设置的角度范围限制之下时,哪些标签将被隐藏。若未设置angleSpanVisibleLimit ,则此模式无效。

常量说明
PieSeries.LabelVisibility.None角度跨度小于angleSpanVisibleLimit 的所有切片标签都将被隐藏。
PieSeries.LabelVisibility.First除第一个标签外,角度跨度小于angleSpanVisibleLimit 的连续切片的所有标签都将被隐藏。这是默认值。
PieSeries.LabelVisibility.Even从第二个开始,角度跨度小于angleSpanVisibleLimit 的连续切片中,每隔一个标签将被隐藏。
PieSeries.LabelVisibility.Odd对于角度跨度小于angleSpanVisibleLimit 的连续切片,将从第一个开始,每隔一个标签隐藏。

该属性自 Qt 6.10 起引入。

另请参阅 angleSpanVisibleLimit 。

angleSpanVisibleLimit : real [since 6.10]

标签可见性的角度范围限制。

将作为切片标签可见性限制的角度跨度。角度跨度小于此值的切片将根据系列中设置的angleSpanLabelVisibility 来调整其可见性。默认值为0 ,这意味着无论angleSpanLabelVisibility 如何设置,都不会隐藏任何切片。

该属性在 Qt 6.10 中引入。

另请参阅 angleSpanLabelVisibility 。

count : int [read-only]

该序列中的切片数量。

endAngle : real

圆饼的终点角。

一个完整的圆饼为360度,其中0度位于12点钟方向。

默认值为360。

holeSize : real

甜甜圈孔的大小。

在设置pieSize 属性时,该属性会在必要时进行调整,以确保孔洞大小不超过饼图大小。

默认值为 0.0。

horizontalPosition : real

饼图的水平位置。

该值相对于图表矩形,因此:

  • 0.0 表示绝对左侧。
  • 1.0 表示绝对右侧。

默认值为 0.5(居中)。

另请参阅 verticalPosition 。

pieSize : real

饼图的大小。

该值相对于图表矩形,因此:

  • 0.0 表示最小 pieSize(不绘制饼图)。
  • 1.0 是能适配该图表的最大 pieSize。

设置此属性时,系统会根据需要调整holeSize 属性,以确保缺口大小不超过饼图大小。

默认值为 0.7。

sliceData : list<real> [since 6.12]

声明式扇区值。

该属性可用于以声明式方式为扇区赋值。设置该属性后,pieseries 会自动为每个值创建一个扇区。扇区的标签可在 `sliceLabels` 中指定。

注意: 不支持将 声明式和命令式数据输入混合使用 。

该属性于 Qt 6.12 中引入。

另请参阅 sliceLabels 。

sliceLabels : list<string> [since 6.12]

声明式扇区标签。

此属性可用于以声明式方式为扇区标签命名。设置该属性后,pieseries 会为声明式创建的扇区设置标签。标签的顺序应与 `sliceData` 中的值顺序一致。如果声明式创建的扇区数量不足,剩余的标签将被忽略。

注意: 不支持混合使用 声明式和命令式数据输入。

该属性在 Qt 6.12 中引入。

另请参阅 sliceData 。

startAngle : real

圆饼的起始角度。

一个完整的圆饼为360度,其中0度位于12点钟方向。

默认值为 0。

sum : real [read-only]

所有切片的总和。

该序列会记录其所包含的所有切片的总和。

verticalPosition : real

饼图的垂直位置。

该值相对于图表矩形,因此:

  • 0.0 表示绝对顶部。
  • 1.0 表示绝对底部。

默认值为 0.5(居中)。

另请参阅 horizontalPosition 。

Signal 文档

added(list<PieSlice> slices)

当由slices 指定的切片被添加到序列中时,会触发此信号。

注意: 相应的处理程序 是onAdded 。

[since 6.10] angleSpanLabelVisibilityChanged(LabelVisibility visibility)

当角度范围限制的可见模式发生变化时,会发出此信号。visibility 参数保存了新的可见模式。

注意: 相应的处理程序 为onAngleSpanLabelVisibilityChanged 。

该信号于 Qt 6.10 版本中引入。

[since 6.10] angleSpanVisibleLimitChanged(real limit)

当角度范围限制发生变化时,会发出此信号。limit 参数保存了新的限制值。

注意: 相应的处理程序 为onAngleSpanVisibleLimitChanged 。

该信号于 Qt 6.10 中引入。

clicked(PieSlice slice)

当点击或轻触slice 时,会触发此信号。

注意: 相应的处理程序 是onClicked 。

countChanged()

当切片计数发生变化时,会发出此信号。

注意: 相应的处理程序 是onCountChanged 。

另请参阅 count 。

doubleClicked(PieSlice slice)

当双击或双点slice 时,会发出此信号。该信号总是在clicked 之后触发。

注意: 相应的处理程序 是onDoubleClicked 。

endAngleChanged()

当派形端角发生变化时,会发出此信号。

注意: 相应的处理程序 为onEndAngleChanged 。

另请参阅 endAngle 。

holeSizeChanged()

当甜甜圈孔的大小发生变化时,会发出此信号。

注意: 相应的处理程序 为onHoleSizeChanged 。

另请参阅 holeSize 。

horizontalPositionChanged()

当水平位置发生变化时,会发出此信号。

注意: 相应的处理程序 为onHorizontalPositionChanged 。

另请参阅 horizontalPosition 。

pieSizeChanged()

当饼图大小发生变化时,会触发此信号。

注意: 相应的处理程序 为onPieSizeChanged 。

另请参阅 pieSize 。

pressed(PieSlice slice)

当用户点击或轻触slice 并按住鼠标按钮或手势时,会触发此信号。

注意: 相应的处理程序 为onPressed 。

released(PieSlice slice)

当用户在slice 上释放先前按下的鼠标按钮或手势时,会触发此信号。

注意: 相应的处理程序 是onReleased 。

removed(list<PieSlice> slices)

当由slices 指定的切片从序列中移除时,会发出此信号。

注意: 相应的处理程序 为onRemoved 。

[since 6.12] sliceDataChanged(list<real> sliceData)

当切片数据发生变化时,会发出此信号。sliceData 参数保存了切片数据。

注意: 相应的处理程序 为onSliceDataChanged 。

该信号在 Qt 6.12 中引入。

[since 6.12] sliceLabelsChanged(list<string> sliceLabels)

当切片数据发生变化时,会发出此信号。sliceLabels 参数存储切片数据。

注意: 相应的处理程序 为onSliceLabelsChanged 。

该信号在 Qt 6.12 中引入。

startAngleChanged()

当派图起始角度发生变化时,会发出此信号。

注意: 相应的处理程序 为onStartAngleChanged 。

另请参阅 startAngle 。

sumChanged()

当所有切片的总和发生变化时,会发出此信号。

注意: 相应的处理程序 为onSumChanged 。

另请参阅 sum 。

verticalPositionChanged()

当垂直位置发生变化时,会发出此信号。

注意: 相应的处理程序 是onVerticalPositionChanged 。

另请参阅 verticalPosition 。

方法文档

PieSlice append(string label, real value)

向饼图中添加一个新扇区,其标签为“label ”,值为“value ”。

PieSlice at(int index)

返回位于index 指定位置处的切片。如果索引无效,则返回null。

void clear()

从饼图中移除所有扇区。

PieSlice find(string label)

返回第一个带有标签label 的切片。如果未找到该标签,则返回 null。

bool remove(PieSlice slice)

从饼图中移除由slice 指定的扇区。如果移除成功,则返回true ;否则返回false 。

bool remove(int index)

从饼图中移除由index 指定的扇区。如果移除成功,则返回true ;否则返回false 。

void removeMultiple(int index, int count)

删除由index 和count 指定的切片范围。即使其中一个切片的删除操作失败,该调用仍会遍历所有切片。

bool replace(list<PieSlice> slices)

将所有当前切片完全替换为slices 。大小无需匹配。如果slices 中任何一个PieSlice 无效,则返回false。

bool replace(PieSlice oldSlice, PieSlice newSlice)

将由 `oldSlice ` 指定的切片替换为 `newSlice`。如果删除成功,则返回 `true `;否则返回 `false `。如果操作成功,则 `oldSlice ` 将被销毁。

bool replace(int index, PieSlice slice)

将位于index 的饼图中由slice 指定的扇区替换。如果替换成功,则返回true ;否则返回false 。

bool take(PieSlice slice)

从序列中获取一个由slice 指定的切片。不会删除该切片对象。若操作成功,则返回true 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.