本页内容

QCanvasBoxShadow Class

QCanvasBoxShadow 是一款用于绘制矩形阴影/光晕的画笔。更多内容...

标题: #include <QCanvasBoxShadow>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
自: Qt 6.11

公共函数

QCanvasBoxShadow()
QCanvasBoxShadow(const QRectF &rect)
QCanvasBoxShadow(qreal x, qreal y, qreal width, qreal height)
QCanvasBoxShadow(QCanvasBoxShadow &&)
qreal blur() const
qreal bottomLeftRadius() const
qreal bottomRightRadius() const
QRectF boundingRect() const
QColor color() const
qreal radius() const
QRectF rect() const
void setBlur(qreal blur)
void setBottomLeftRadius(qreal radius)
void setBottomRightRadius(qreal radius)
void setColor(QColor color)
void setRadius(qreal radius)
void setRect(qreal x, qreal y, qreal width, qreal height)
void setRect(const QRectF &rect)
void setSpread(qreal spread)
void setTopLeftRadius(qreal radius)
void setTopRightRadius(qreal radius)
qreal spread() const
qreal topLeftRadius() const
qreal topRightRadius() const
bool operator!=(const QCanvasBoxShadow &lhs, const QCanvasBoxShadow &rhs)
QDataStream &operator<<(QDataStream &stream, const QCanvasBoxShadow &shadow)
bool operator==(const QCanvasBoxShadow &lhs, const QCanvasBoxShadow &rhs)
QDataStream &operator>>(QDataStream &stream, QCanvasBoxShadow &shadow)

详细说明

QCanvasBoxShadow 是一种应用了模糊效果的圆角矩形画笔。由于采用了 SDF 方法,QCanvasBoxShadow 的性能远优于那些为任意形状的项生成模糊阴影/光晕的一般阴影效果。

QCanvasBoxShadow 的特性与 CSS box-shadow 相似,具有半径、扩散、模糊和颜色等属性。其渲染效果也与 CSS box-shadow 一致,仅有少量显著差异,以确保 QCanvasBoxShadow 具有尽可能高的性能。 模糊效果是在着色器中通过数学计算得出的,而非使用 CSS box-shadow 实现中常用的高斯模糊。这使得阴影的外观略有不同,尤其是在模糊量大于阴影宽度/高度的一半时。

以下是 Chrome 浏览器中 QCanvasBoxShadow 与 CSS box-shadow 渲染效果的对比截图。这些截图展示了模糊半径为 0、10、20 和 40 像素时对较小阴影的影响。

CSS box-shadow:

由黑色条和黑色点组成的行,其 CSS `box-shadow` 的模糊值分别为 0、10、20 和 40 像素

QCanvasBoxShadow:

由一条黑色条形和一个黑色圆点组成的行,其 QCanvasBoxShadow 模糊值分别为 0、10、20 和 40 像素

成员函数文档

QCanvasBoxShadow::QCanvasBoxShadow()

创建一个默认的盒子阴影。盒子阴影的位置为 (0, 0),大小为 (100, 100)。阴影圆角半径为0.0 ,模糊半径为0.0 。阴影颜色为Qt::black 。

[explicit] QCanvasBoxShadow::QCanvasBoxShadow(const QRectF &rect)

创建一个黑色方框阴影,其位置为rect ,且不带圆角和模糊效果。

QCanvasBoxShadow::QCanvasBoxShadow(qreal x, qreal y, qreal width, qreal height)

创建一个盒阴影,其位置为x ,y ,大小为width ,height 。

另请参阅 blur() 和radius()。

[constexpr noexcept default] QCanvasBoxShadow::QCanvasBoxShadow(QCanvasBoxShadow &&)

通过Move构造一个QCanvasBoxShadow 的实例。

qreal QCanvasBoxShadow::blur() const

返回阴影框的模糊效果。

另请参阅 setBlur()。

qreal QCanvasBoxShadow::bottomLeftRadius() const

返回阴影框左下角的半径。当该值为-1 时,绘制阴影时将使用radius()函数为此角计算的值。默认值为-1 。

另请参阅 setBottomLeftRadius()。

qreal QCanvasBoxShadow::bottomRightRadius() const

返回阴影框的右下角半径。当该值为-1 时,绘制阴影时将使用radius()对此角的计算结果。默认值为-1 。

另请参阅 setBottomRightRadius()。

QRectF QCanvasBoxShadow::boundingRect() const

返回阴影覆盖的区域。此方法会考虑阴影rect()、blur() 和spread()。如果您不想使用QCanvasPainter::drawBoxShadow() 辅助方法,可以利用此方法,例如将尺寸正确的QCanvasPainter::rect() 添加到路径中。

另请参阅 setRect()、setBlur 和setSpread 。

QColor QCanvasBoxShadow::color() const

返回阴影框的颜色。

另请参阅 setColor()。

qreal QCanvasBoxShadow::radius() const

返回阴影框的半径。

另请参阅 setRadius()。

QRectF QCanvasBoxShadow::rect() const

返回阴影框的矩形面积。

另请参阅 setRect()。

void QCanvasBoxShadow::setBlur(qreal blur)

将阴影模糊值设置为blur 像素。默认值为0.0 ,表示不进行模糊处理。

另请参阅 blur()。

void QCanvasBoxShadow::setBottomLeftRadius(qreal radius)

将左下角的圆角半径设置为radius 。默认值为-1 ,这意味着该角未单独设置圆角半径,而是使用通用的radius()。

另请参阅 bottomLeftRadius()。

void QCanvasBoxShadow::setBottomRightRadius(qreal radius)

将右下角的圆角半径设置为radius 。默认值为-1 ,这意味着该角未单独设置圆角半径,而是使用通用圆角半径radius()。

另请参阅 bottomRightRadius()。

void QCanvasBoxShadow::setColor(QColor color)

将阴影颜色设置为color 。默认值为黑色,不透明度为100%。

另请参阅 color()。

void QCanvasBoxShadow::setRadius(qreal radius)

将阴影圆角半径设置为radius 像素。默认值为0.0 ,表示无圆角。

另请参阅 radius()。

void QCanvasBoxShadow::setRect(qreal x, qreal y, qreal width, qreal height)

将阴影框的矩形区域设置为 (x,y,width,height)。

另请参阅 rect()。

void QCanvasBoxShadow::setRect(const QRectF &rect)

将阴影框的矩形区域设置为rect 。

这是一个重载函数。

void QCanvasBoxShadow::setSpread(qreal spread)

将阴影扩散设置为spread 像素。默认值为0.0 ,表示无扩散。

另请参阅 spread()。

void QCanvasBoxShadow::setTopLeftRadius(qreal radius)

将左上角的圆角半径设置为radius 。默认值为-1 ,这意味着该角未设置单独的圆角半径,而是使用通用值radius()。

另请参阅 topLeftRadius()。

void QCanvasBoxShadow::setTopRightRadius(qreal radius)

将右上角的圆角半径设置为radius 。默认值为-1 ,这意味着该角未设置单独的圆角半径,而是使用通用值radius()。

另请参阅 topRightRadius()。

qreal QCanvasBoxShadow::spread() const

返回阴影框的范围。

另请参阅 setSpread()。

qreal QCanvasBoxShadow::topLeftRadius() const

返回阴影框的左上角半径。当该值为-1 时,绘制阴影时将使用radius() 函数为该角计算的值。默认值为-1 。

另请参阅 setTopLeftRadius()。

qreal QCanvasBoxShadow::topRightRadius() const

返回阴影框的右上角半径。当该值为-1 时,绘制阴影时将使用radius()函数为该角计算的值。默认值为-1 。

另请参阅 setTopRightRadius()。

相关非成员

[noexcept] bool operator!=(const QCanvasBoxShadow &lhs, const QCanvasBoxShadow &rhs)

如果盒子阴影lhs 与rhs 不一致,则返回true ;否则返回false 。

另请参阅 operator==()。

QDataStream &operator<<(QDataStream &stream, const QCanvasBoxShadow &shadow)

将给定的shadow 写入给定的stream ,并返回对stream 的引用。

另请参阅 《Qt 数据类型的序列化》。

[noexcept] bool operator==(const QCanvasBoxShadow &lhs, const QCanvasBoxShadow &rhs)

如果盒子阴影lhs 等于rhs ,则返回true ;否则返回false 。

另请参阅 operator!=()。

QDataStream &operator>>(QDataStream &stream, QCanvasBoxShadow &shadow)

从给定的stream 中读取指定的shadow ,并返回对stream 的引用。

另请参阅 《Qt 数据类型的序列化》。

© 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.