在本页

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

公共类型

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::Outside0标签位于用臂连接的切片外部。这是默认值。
QPieSlice::LabelPosition::InsideHorizontal1标签位于切片中心,水平放置。
QPieSlice::LabelPosition::InsideTangential2标签位于切片中心,旋转后与切片圆弧的切线平行。
QPieSlice::LabelPosition::InsideNormal3标签在切片内居中,旋转后与切片圆弧的法线平行。

属性文档

[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()

另请参阅 labellabelVisible

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()

另请参阅 valueQPieSeries::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)

使用指定的valuelabel 将单个子片段添加到片段中。子片段的所有权将传递给片段。如果valueNaNInf-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

搜索包含标签labelPieSlice 。如果找到,则返回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 位置上的PieSlicePieSlice 将被永久删除。如果删除成功,则返回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 ,则将其替换为newSliceoldSlice 将被永久删除。如果替换成功,则返回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.