En esta página

DropShadow QML Type

Genera una sombra suave detrás del elemento de origen. Más...

Import Statement: import Qt5Compat.GraphicalEffects
Since: QtGraphicalEffects 1.0
Inherits:

Item

Propiedades

Descripción detallada

Nota: El componente MultiEffect proporciona un efecto de sombra paralela con algunas ventajas de rendimiento. Para código nuevo, debe considerarse como una alternativa al uso de Qt Graphical Effects.

El efecto DropShadow desenfoca el canal alfa de la entrada, colorea el resultado y lo coloca detrás del objeto fuente para crear una sombra suave. El color de la sombra puede cambiarse utilizando la propiedad color. La ubicación de la sombra puede cambiarse con las propiedades horizontalOffset y verticalOffset.

FuenteEfecto aplicado

La sombra suave se crea desenfocando la imagen en vivo utilizando un desenfoque gaussiano. Realizar el desenfoque en directo es una operación costosa. El desenfoque gaussiano a pantalla completa, incluso con un número moderado de muestras, sólo funcionará a 60 fps en hardware gráfico de gama alta.

Cuando la fuente es estática, se puede establecer la propiedad cached para asignar otro búfer y evitar realizar el desenfoque cada vez que se dibuja.

Nota: Este efecto está disponible cuando se ejecuta con OpenGL.

Ejemplo

El siguiente ejemplo muestra cómo aplicar el efecto.

import QtQuick
import Qt5Compat.GraphicalEffects

Item {
    width: 300
    height: 300

    Rectangle {
        anchors.fill: parent
    }

    Image {
        id: butterfly
        source: "images/butterfly.png"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }

    DropShadow {
        anchors.fill: butterfly
        horizontalOffset: 3
        verticalOffset: 3
        radius: 8.0
        color: "#80000000"
        source: butterfly
    }
}

Documentación de la propiedad

cached : alias

Esta propiedad permite almacenar en caché los píxeles de salida del efecto para mejorar el rendimiento del renderizado. Cada vez que se cambian las propiedades de la fuente o del efecto, los píxeles de la caché deben actualizarse. El consumo de memoria se incrementa, ya que se requiere un buffer extra de memoria para almacenar la salida del efecto.

Se recomienda desactivar la caché cuando se animen la fuente o las propiedades del efecto.

Por defecto, la propiedad está establecida en false.

color : alias

Esta propiedad define el valor de color RGBA que se utiliza para la sombra.

Por defecto, la propiedad se establece en "black".

Ejemplos de salida con diferentes valores de color

color #000000 color: #0000ff color #aa000000
radius: 8radius: 8radius: 8
samples: 17samples: 17samples: 17
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20
spread: 0spread: 0spread: 0

horizontalOffset : real

Las propiedades HorizontalOffset y verticalOffset definen el desplazamiento de la sombra renderizada en comparación con la posición del elemento DropShadow. A menudo, el elemento DropShadow está anclado de forma que llena el elemento fuente. En este caso, si las propiedades HorizontalOffset y verticalOffset se establecen en 0, la sombra se representa exactamente debajo del elemento fuente. Cambiando las propiedades offset, la sombra puede posicionarse relativamente al elemento fuente.

Los valores van de -inf a inf. Por defecto, las propiedades están establecidas en 0.

Ejemplos de salida con diferentes valores de horizontalOffset

horizontalOffset: -20 horizontalOffset: 0 horizontalOffset: 20
radius: 4radius: 4radius: 4
samples: 9samples: 9samples: 9
color: #000000color: #000000color: #000000
verticalOffset: 0verticalOffset: 0verticalOffset: 0
spread: 0spread: 0spread: 0
Ejemplos de salida con diferentes valores de verticalOffset

desplazamientohorizontal: 0 horizontalOffset: 0
radius: 4radius: 8
samples: 9samples: 17
color: #000000color: #000000
verticalOffset: 0verticalOffset: 20
spread: 0spread: 0

radius : int

El radio define la suavidad de la sombra. Un radio mayor hace que los bordes de la sombra aparezcan más borrosos.

El desenfoque ideal se consigue seleccionando samples y radius de forma que samples = 1 + radius * 2, como:

RadioMuestras
0 (sin desenfoque)1
13
25
37

Por defecto, la propiedad está establecida en floor(samples/2).

Ejemplos de salida con diferentes valores de radio

radio: 0 radio: 6 radio: 12
samples: 25samples: 25samples: 25
color: #000000color: #000000color: #000000
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20
spread: 0spread: 0spread: 0

samples : alias

Esta propiedad define cuántas muestras se toman por píxel cuando se realiza el cálculo del desenfoque de suavizado de bordes. Un valor mayor produce mejor calidad, pero es más lento de renderizar.

Idealmente, este valor debería ser dos veces mayor que el valor más alto de radio requerido más uno, como:

RadioMuestras
0 (sin desenfoque)1
13
25
37

Por defecto, la propiedad se establece en 9.

Esta propiedad no está pensada para ser animada. Cambiar esta propiedad hará que se recompilen los sombreadores OpenGL subyacentes.

source : alias

Esta propiedad define el elemento fuente que se va a utilizar como fuente para la sombra generada.

Nota: No se admite que el efecto se incluya a sí mismo, por ejemplo estableciendo source como padre del efecto.

spread : alias

Esta propiedad define cómo de grande es la parte del color de la sombra que se refuerza cerca de los bordes de la fuente.

El valor oscila entre 0,0 y 1,0. Por defecto, la propiedad está establecida en 0.0.

Ejemplos de salida con diferentes valores de dispersión

dispersión: 0.0 dispersión: 0.5 dispersión: 1.0
radius: 8radius: 8radius: 8
samples: 17samples: 17samples: 17
color: #000000color: #000000color: #000000
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20

transparentBorder : alias

Esta propiedad determina si el efecto tiene o no un borde transparente.

Cuando se establece en true, el exterior del elemento se rellena con un borde transparente de 1 píxel de ancho, haciendo que el muestreo fuera de la textura de origen utilice la transparencia en lugar de los píxeles del borde. Sin esta propiedad, una imagen que tenga bordes opacos no obtendrá una sombra borrosa.

En la imagen de abajo, el Rectángulo de la izquierda tiene bordes transparentes y tiene bordes difuminados, mientras que el Rectángulo de la derecha no los tiene:

Por defecto, esta propiedad está establecida en true.

import QtQuick
import Qt5Compat.GraphicalEffects

Rectangle {
    width: 180
    height: 100

    Row {
        anchors.centerIn: parent
        spacing: 16

        Rectangle {
            id: normalRect
            width: 60
            height: 60
            radius: 10
            color: "steelblue"
            layer.enabled: true
            layer.effect: DropShadow {
                transparentBorder: false
                horizontalOffset: 8
                verticalOffset: 8
            }
        }

        Rectangle {
            id: transparentBorderRect
            width: 60
            height: 60
            radius: 10
            color: "steelblue"
            layer.enabled: true
            layer.effect: DropShadow {
                transparentBorder: true
                horizontalOffset: 8
                verticalOffset: 8
            }
        }
    }
}

verticalOffset : real

Las propiedades HorizontalOffset y verticalOffset definen el desplazamiento de la sombra renderizada en comparación con la posición del elemento DropShadow. A menudo, el elemento DropShadow está anclado de forma que llena el elemento fuente. En este caso, si las propiedades HorizontalOffset y verticalOffset se establecen en 0, la sombra se representa exactamente debajo del elemento fuente. Cambiando las propiedades offset, la sombra puede posicionarse relativamente al elemento fuente.

Los valores van de -inf a inf. Por defecto, las propiedades están establecidas en 0.

Ejemplos de salida con diferentes valores de horizontalOffset

horizontalOffset: -20 horizontalOffset: 0 horizontalOffset: 20
radius: 4radius: 4radius: 4
samples: 9samples: 9samples: 9
color: #000000color: #000000color: #000000
Desplazamiento vertical: 0Desplazamiento vertical: 0Desplazamiento vertical: 0
spread: 0spread: 0spread: 0
Ejemplos de salida con diferentes valores de verticalOffset

horizontalOffset: 0 horizontalOffset: 0
radius: 4radius: 8
samples: 9samples: 17
color: #000000color: #000000
Desplazamiento vertical: 0verticalOffset: 20
spread: 0spread: 0

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