このページでは

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 は、ぼかしが適用された角丸長方形のブラシです。QCanvasBoxShadow は SDF アプローチを採用しているため、任意の形状のアイテムに対してぼやけた影やグローを生成する一般的なシャドウよりも、パフォーマンスがはるかに優れています。

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

QCanvasBoxShadow のインスタンスをmove-constructで生成します。

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.