在本页

QCanvasBoxShadow Class

QCanvasBoxShadow 是一种用于绘制矩形阴影/发光的笔刷。更多

Header: #include <QCanvasBoxShadow>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Qt 6.11
继承于 QCanvasBrush
状态:技术预览版

公共函数

QCanvasBoxShadow()
QCanvasBoxShadow(const QRectF &rect, float radius = 0.0f, float blur = 0.0f, const QColor &color = QColorConstants::Black)
QCanvasBoxShadow(float x, float y, float width, float height, float radius = 0.0f, float blur = 0.0f, const QColor &color = QColorConstants::Black)
float blur() const
float bottomLeftRadius() const
float bottomRightRadius() const
QRectF boundingRect() const
QColor color() const
float radius() const
QRectF rect() const
void setBlur(float blur)
void setBottomLeftRadius(float radius)
void setBottomRightRadius(float radius)
void setColor(const QColor &color)
void setRadius(float radius)
void setRect(float x, float y, float width, float height)
void setRect(const QRectF &rect)
void setSpread(float spread)
void setTopLeftRadius(float radius)
void setTopRightRadius(float radius)
float spread() const
float topLeftRadius() const
float 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 是一种应用了模糊效果的圆角矩形笔刷。由于 QCanvasBoxShadow 采用了 SDF 方法,因此它的性能比为任何形状的项目创建模糊阴影/光晕的一般阴影要好得多。

QCanvasBoxShadow 的功能与 CSS 框阴影相似,包括半径、扩散、模糊和颜色值。渲染输出也与 CSS box-shadow 类似,但有一些明显的不同,以便尽可能提高 QCanvasBoxShadow 的性能。模糊是在着色器中用数学方法计算出来的,而不是 CSS 框阴影实现通常使用的高斯模糊。这使得阴影看起来略有不同,尤其是当模糊量大于阴影宽度/高度的一半时。

下面是 Chrome 浏览器中比较 QCanvasBoxShadow 和 CSS box-shadow 渲染输出的截图。这些截图显示了 0、10、20 和 40 像素的模糊半径对较小阴影的影响。

CSS 框阴影

QCanvasBoxShadow:

成员函数文档

QCanvasBoxShadow::QCanvasBoxShadow()

构建默认盒状阴影。盒状阴影的位置为(0,0),大小为(100,100)。阴影角半径为0.0 ,模糊度为0.0 。阴影颜色为Qt::black

QCanvasBoxShadow::QCanvasBoxShadow(const QRectF &rect, float radius = 0.0f, float blur = 0.0f, const QColor &color = QColorConstants::Black)

构建盒状阴影。方框阴影的位置和大小由rect 定义。阴影角半径为radius ,模糊度为blur 。阴影颜色为color

QCanvasBoxShadow::QCanvasBoxShadow(float x, float y, float width, float height, float radius = 0.0f, float blur = 0.0f, const QColor &color = QColorConstants::Black)

构建盒状阴影。方框阴影位置为x,y ,大小为width,height 。阴影角半径为radius ,模糊度为blur 。阴影颜色为color

float QCanvasBoxShadow::blur() const

返回阴影框的模糊度。

另请参阅 setBlur()。

float QCanvasBoxShadow::bottomLeftRadius() const

返回阴影框左下角的半径。如果该值为-1 ,阴影的绘制将使用radius() 中该角的值。默认值为-1

另请参阅 setBottomLeftRadius()。

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

float QCanvasBoxShadow::radius() const

返回阴影框的半径。

另请参见 setRadius()。

QRectF QCanvasBoxShadow::rect() const

返回阴影框的矩形区域。

另请参阅 setRect()。

void QCanvasBoxShadow::setBlur(float blur)

将阴影模糊设置为blur ,单位为像素。默认值为0.0 ,表示不模糊。

另请参阅 blur().

void QCanvasBoxShadow::setBottomLeftRadius(float radius)

将左下角半径设置为radius 。默认值为-1 ,表示未为该角设置单独的半径,而使用普通的radius() 代替。

另请参阅 bottomLeftRadius()。

void QCanvasBoxShadow::setBottomRightRadius(float radius)

将右下角半径设置为radius 。默认值为-1 ,表示未为该角设置单独的半径,而使用普通的radius() 代替。

另请参阅 bottomRightRadius()。

void QCanvasBoxShadow::setColor(const QColor &color)

将阴影颜色设置为color 。默认值为完全不透明的黑色。

另请参阅 color() 。

void QCanvasBoxShadow::setRadius(float radius)

将阴影角半径设置为radius (单位:像素)。默认值为0.0 ,表示无半径。

另请参阅 radius().

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

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

另请参阅 rect().

void QCanvasBoxShadow::setRect(const QRectF &rect)

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

这是一个重载函数。

void QCanvasBoxShadow::setSpread(float spread)

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

另请参阅 spread().

void QCanvasBoxShadow::setTopLeftRadius(float radius)

将左上角半径设置为radius 。默认值为-1 ,表示未为该角设置单独的半径,而使用普通的radius() 代替。

另请参阅 topLeftRadius()。

void QCanvasBoxShadow::setTopRightRadius(float radius)

将右上角半径设置为radius 。默认值为-1 ,表示未为该角设置单独的半径,而使用普通的radius() 代替。

另请参阅 topRightRadius()。

float QCanvasBoxShadow::spread() const

返回阴影框的展开图。

另请参见 setSpread()。

float QCanvasBoxShadow::topLeftRadius() const

返回阴影框的左上角半径。如果该值为-1 ,阴影的绘制将使用radius() 中该角的值。默认值为-1

另请参阅 setTopLeftRadius()。

float QCanvasBoxShadow::topRightRadius() const

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

另请参阅 setTopRightRadius()。

相关非会员

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

如果方框阴影lhsrhs 不同,则返回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.