QPieSlice Class
QPieSlice 类表示派系列中的单片。更多
| 头文件: | #include <QPieSlice> |
| CMake.QPieSlice | find_package(Qt6 REQUIRED COMPONENTS Graphs)target_link_libraries(mytarget PRIVATE Qt6::Graphs) |
| qmake: | QT += graphs |
| 在 QML 中: | PieSlice |
| 继承: | QObject |
- 所有成员的列表,包括继承成员
- QPieSlice 是Qt Graphs C++ Classes for 2D 的一部分。
公共类型
| enum class | LabelPosition { Outside, InsideHorizontal, InsideTangential, InsideNormal } |
属性
|
|
公共功能
| QPieSlice(QObject *parent = nullptr) | |
| QPieSlice(const QString &label, qreal value, QObject *parent = nullptr) | |
| virtual | ~QPieSlice() override |
| qreal | angleSpan() const |
| bool | append(QPieSlice *slice) |
| bool | append(const QList<QPieSlice *> &slices) |
| QPieSlice * | append(const QString &label, qreal value) |
| QPieSlice * | at(qsizetype index) const |
| QColor | borderColor() const |
| qreal | borderWidth() const |
| QColor | color() const |
| qreal | explodeDistanceFactor() const |
| QPieSlice * | find(const QString &label) const |
| bool | insert(qsizetype index, QPieSlice *slice) |
| bool | isEmpty() const |
| bool | isExploded() const |
| bool | isLabelVisible() const |
| QString | label() const |
| qreal | labelArmLengthFactor() const |
| QColor | labelColor() const |
| QFont | labelFont() const |
| QPieSlice::LabelPosition | labelPosition() |
| qreal | percentage() const |
| bool | remove(QPieSlice *slice) |
| bool | remove(qsizetype index) |
| void | removeMultiple(qsizetype index, int count) |
| bool | replace(QPieSlice *oldSlice, QPieSlice *newSlice) |
| bool | replace(qsizetype index, QPieSlice *slice) |
| bool | replaceAll(const QList<QPieSlice *> &slices) |
| QPieSeries * | series() const |
| void | setBorderColor(QColor color) |
| void | setBorderWidth(qreal borderWidth) |
| void | setColor(QColor color) |
| void | setExplodeDistanceFactor(qreal factor) |
| void | setExploded(bool exploded) |
| void | setLabel(const QString &label) |
| void | setLabelArmLengthFactor(qreal factor) |
| void | setLabelColor(QColor color) |
| void | setLabelFont(const QFont &font) |
| void | setLabelPosition(QPieSlice::LabelPosition position) |
| void | setLabelVisible(bool visible = true) |
| void | setSubSlicesRatio(qreal subSlicesRatio) |
| void | setValue(qreal value) |
| QQmlListProperty<QPieSlice> | sliceChildren() |
| qreal | startAngle() const |
| QList<QPieSlice *> | subSlices() const |
| qsizetype | subSlicesCount() const |
| qreal | subSlicesRatio() const |
| qreal | subSlicesSum() const |
| bool | take(QPieSlice *slice) |
| qreal | value() const |
公共插槽
| void | clear() |
信号
| void | angleSpanChanged() |
| void | borderColorChanged() |
| void | borderWidthChanged() |
| void | colorChanged() |
| void | explodeDistanceFactorChanged() |
| void | explodedChanged() |
| void | labelArmLengthFactorChanged() |
| void | labelChanged() |
| void | labelColorChanged() |
| void | labelFontChanged() |
| void | labelPositionChanged() |
| void | labelVisibleChanged() |
| void | percentageChanged() |
| void | startAngleChanged() |
| void | subSlicesAdded(const QList<QPieSlice *> &slices) |
| void | subSlicesCountChanged(qsizetype count) |
| void | subSlicesRatioChanged(qreal newSubSlicesRatio) |
| void | subSlicesRemoved(const QList<QPieSlice *> &slices) |
| void | subSlicesSumChanged(qreal sum) |
| void | valueChanged() |
详细说明
饼片有一个值和一个标签。当切片被添加到饼系列中时,QPieSeries 对象会计算该切片与饼系列中所有切片之和的百分比,以确定该切片在图表中的实际大小。
默认情况下,标签是隐藏的。如果标签可见,它可以位于切片外侧并用一条臂与切片相连,也可以位于切片内侧水平居中或与切片圆弧的切线或法线平行居中。
默认情况下,切片的视觉外观由主题设置,但可以通过指定切片属性来覆盖主题。不过,如果在自定义切片后更改主题,所有自定义功能都将丢失。
为了实现用户与饼图的交互,当用户点击饼片或将鼠标悬停在饼片上时,会发出一些基本信号。
饼片可以包含子饼片。
另请参阅 QPieSeries 。
成员类型文档
enum class QPieSlice::LabelPosition
该枚举描述切片标签的位置。
| 常数 | 值 | 描述 |
|---|---|---|
QPieSlice::LabelPosition::Outside | 0 | 标签位于用臂连接的切片外部。这是默认值。 |
QPieSlice::LabelPosition::InsideHorizontal | 1 | 标签位于切片中心,水平放置。 |
QPieSlice::LabelPosition::InsideTangential | 2 | 标签位于切片中心,旋转后与切片圆弧的切线平行。 |
QPieSlice::LabelPosition::InsideNormal | 3 | 标签在切片内居中,旋转后与切片圆弧的法线平行。 |
属性文档
[read-only] angleSpan : qreal
该属性表示切片的度数跨度。一个完整的饼是 360 度,其中 0 度为 12 点钟方向。切片添加到系列后会自动更新。
访问功能:
| qreal | angleSpan() const |
通知信号:
| void | angleSpanChanged() |
borderColor : QColor
该属性保存用于绘制切片边框的颜色。这是一个方便修改切片的属性。
访问函数:
| QColor | borderColor() const |
| void | setBorderColor(QColor color) |
Notifier 信号:
| void | borderColorChanged() |
另请参阅 borderWidth 。
borderWidth : qreal
此属性用于保存切片边框的宽度。这是一个方便修改切片边框宽度的属性。
访问函数:
| qreal | borderWidth() const |
| void | setBorderWidth(qreal borderWidth) |
通知信号:
| void | borderWidthChanged() |
另请参见 borderColor 。
color : QColor
该属性用于保存切片的填充颜色。这是一个方便的属性,用于修改切片的填充颜色。
访问功能:
| QColor | color() const |
| void | setColor(QColor color) |
通知信号:
| void | colorChanged() |
explodeDistanceFactor : qreal
决定切片爆炸时离饼的距离。
- 1.0 表示距离与半径相同。
- 0.5 表示距离是半径的一半。
默认距离为 0.15
访问功能:
| qreal | explodeDistanceFactor() const |
| void | setExplodeDistanceFactor(qreal factor) |
通知信号:
| void | explodeDistanceFactorChanged() |
另请参见 exploded 。
exploded : bool
此属性表示切片是否从馅饼中分离出来。
访问功能:
| bool | isExploded() const |
| void | setExploded(bool exploded) |
Notifier 信号:
| void | explodedChanged() |
另请参见 explodeDistanceFactor 。
label : QString
此属性包含切片的标签。
注意: 该字符串可以是 HTML 格式。
访问功能:
| QString | label() const |
| void | setLabel(const QString &label) |
Notifier 信号:
| void | labelChanged() |
另请参阅 labelVisible,labelFont, 和labelArmLengthFactor 。
labelArmLengthFactor : qreal
此属性表示标签臂的长度。该系数相对于饼的半径。例如
- 1.0 表示长度与半径相同。
- 0.5 表示长度是半径的一半。
默认情况下,臂长为 0.15
访问功能:
| qreal | labelArmLengthFactor() const |
| void | setLabelArmLengthFactor(qreal factor) |
通知信号:
| void | labelArmLengthFactorChanged() |
另请参见 label,labelVisible, 和labelFont 。
labelColor : QColor
该属性保存用于绘制切片标签的颜色。
访问功能:
| QColor | labelColor() const |
| void | setLabelColor(QColor color) |
通知信号:
| void | labelColorChanged() |
labelFont : QFont
该属性用于保存绘制标签文本时使用的字体。
访问功能:
| QFont | labelFont() const |
| void | setLabelFont(const QFont &font) |
Notifier 信号:
| void | labelFontChanged() |
另请参阅 label,labelVisible, 和labelArmLengthFactor 。
labelPosition : LabelPosition
该属性用于保存切片标签的位置。
访问功能:
| QPieSlice::LabelPosition | labelPosition() |
| void | setLabelPosition(QPieSlice::LabelPosition position) |
Notifier 信号:
| void | labelPositionChanged() |
另请参阅 label 和labelVisible 。
labelVisible : bool
该属性用于设置切片标签的可见性。默认情况下,标签不可见。
访问功能:
| bool | isLabelVisible() const |
| void | setLabelVisible(bool visible = true) |
Notifier 信号:
| void | labelVisibleChanged() |
另请参见 label,labelFont, 和labelArmLengthFactor 。
[read-only] percentage : qreal
该属性表示切片占系列中所有切片总和的百分比。实际值范围为 0.0 至 1.0。切片添加到系列后会自动更新。
访问功能:
| qreal | percentage() const |
通知信号:
| void | percentageChanged() |
另请参阅 value 和QPieSeries::sum 。
[read-only] sliceChildren : QQmlListProperty<QPieSlice>
包含在此片段中的子片段列表。这是一个默认属性,允许在 QML 片段元素中指定子片段,而无需明确使用子属性名称。
访问功能:
| QQmlListProperty<QPieSlice> | sliceChildren() |
[read-only] startAngle : qreal
该属性表示该切片在其所属系列中的起始角度。一个完整的饼是 360 度,其中 0 度为 12 点钟方向。切片添加到系列后会自动更新。
访问功能:
| qreal | startAngle() const |
通知信号:
| void | startAngleChanged() |
[read-only] subSlicesCount : qsizetype
此属性表示切片中子切片的数量。
访问功能:
| qsizetype | subSlicesCount() const |
通知信号:
| void | subSlicesCountChanged(qsizetype count) |
subSlicesRatio : qreal
子片段与父片段相比的相对大小。该值范围为 0.0 至 1.0,其中 1.0 表示子片段占用的空间与父片段在没有子片段的情况下占用的空间相同。默认值为 0.6。
访问功能:
| qreal | subSlicesRatio() const |
| void | setSubSlicesRatio(qreal subSlicesRatio) |
通知信号:
| void | subSlicesRatioChanged(qreal newSubSlicesRatio) |
[read-only] subSlicesSum : qreal
该属性保存所有子片段的总和。
切片会跟踪其持有的所有子切片的总和。
访问功能:
| qreal | subSlicesSum() const |
通知信号:
| void | subSlicesSumChanged(qreal sum) |
value : qreal
该属性保存片段的值。
注意: 负值会转换为正值。
访问功能:
| qreal | value() const |
| void | setValue(qreal value) |
Notifier 信号:
| void | valueChanged() |
另请参阅 percentage() 和QPieSeries::sum() 。
成员函数文档
[explicit] QPieSlice::QPieSlice(QObject *parent = nullptr)
用父parent 构建一个空切片。
另请参阅 QPieSeries::append() 和QPieSeries::insert() 。
QPieSlice::QPieSlice(const QString &label, qreal value, QObject *parent = nullptr)
用指定的value,label, 和parent 构建一个空切片。
另请参阅 QPieSeries::append() 和QPieSeries::insert() 。
[override virtual noexcept] QPieSlice::~QPieSlice()
删除片段。如果片段已添加到系列中,则不应删除。
[invokable] bool QPieSlice::append(QPieSlice *slice)
将slice 指定的子片段添加到片段中。子片段的所有权将传递给片段。
如果追加成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable] bool QPieSlice::append(const QList<QPieSlice *> &slices)
将slices 指定的子片段数组添加到片段中。子片段的所有权将传递给片段。
如果追加成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[invokable] QPieSlice *QPieSlice::append(const QString &label, qreal value)
使用指定的value 和label 将单个子片段添加到片段中。子片段的所有权将传递给片段。如果value 是NaN 、Inf 或-Inf ,则返回 null,并且不向系列添加任何内容。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[invokable] QPieSlice *QPieSlice::at(qsizetype index) const
返回位置index 上的PieSlice 。如果未找到PieSlice ,则返回 null。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[slot] void QPieSlice::clear()
清除切片中的所有子切片。
[invokable] QPieSlice *QPieSlice::find(const QString &label) const
搜索包含标签label 的PieSlice 。如果找到,则返回PieSlice ,否则为空。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[invokable] bool QPieSlice::insert(qsizetype index, QPieSlice *slice)
将slice 指定的子分片插入index 指定位置的子分片之前的分片。子分片的所有权将传递给分片。
如果插入成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
bool QPieSlice::isEmpty() const
如果子片段列表为空,则返回true 。
[invokable] bool QPieSlice::remove(QPieSlice *slice)
从分片中删除slice 指定的单个子分片,并将其永久删除。
调用后不能再引用指针。
如果删除成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable] bool QPieSlice::remove(qsizetype index)
删除index 位置上的PieSlice 。PieSlice 将被永久删除。如果删除成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[invokable] void QPieSlice::removeMultiple(qsizetype index, int count)
从切片index 开始删除多个 PieSlices,直到count 。PieSlices 将被永久删除。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[invokable] bool QPieSlice::replace(QPieSlice *oldSlice, QPieSlice *newSlice)
如果在片段中找到PieSlice oldSlice ,则将其替换为newSlice 。oldSlice 将被永久删除。如果替换成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable] bool QPieSlice::replace(qsizetype index, QPieSlice *slice)
用slice 指定的PieSlice 替换位置index 上的 。原来的PieSlice 将被永久删除。如果替换任何 PieSlices 失败,则返回false 。
注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE 。
[invokable] bool QPieSlice::replaceAll(const QList<QPieSlice *> &slices)
用slices 指定的列表替换切片中的整个 PieSlices 列表。所有原始 PieSlices 将被永久删除。如果所有 PieSlices 都被成功替换,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
QPieSeries *QPieSlice::series() const
返回此切片所属的系列。
另请参阅 QPieSeries::append()。
QList<QPieSlice *> QPieSlice::subSlices() const
返回属于此切片的子切片列表。
[signal] void QPieSlice::subSlicesAdded(const QList<QPieSlice *> &slices)
当slices 指定的子切片被添加到切片时,会发出该信号。
另请参阅 append().
qsizetype QPieSlice::subSlicesCount() const
返回此切片中子切片的数量。
注: subSlicesCount 属性的获取函数。
[signal] void QPieSlice::subSlicesRemoved(const QList<QPieSlice *> &slices)
当slices 指定的子切片从切片中移除时,会发出该信号。
另请参见 remove().
qreal QPieSlice::subSlicesSum() const
返回此片段中所有子片段值的总和。
注: subSlicesSum 属性的获取函数。
另请参阅 QPieSlice::value()、QPieSlice::setValue() 和QPieSlice::percentage()。
[invokable] bool QPieSlice::take(QPieSlice *slice)
从序列中提取一个子切片(由slice 指定)。不会删除切片对象。
注意: 切片仍是切片的父对象。您必须设置父对象才能获得完全所有权。
如果获取操作成功,则返回true 。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
© 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.