En esta página

BoundaryRule QML Type

Define una restricción en el rango de valores que se pueden establecer en una propiedad numérica. Más...

Import Statement: import Qt.labs.animation

Propiedades

Señales

Métodos

Descripción detallada

Una BoundaryRule define el rango de valores que puede tener una determinada propiedad. Cuando se establece un valor fuera de rango, se aplica una "resistencia" a través de una curva de flexión.

Por ejemplo, la siguiente BoundaryRule evita que DragHandler arrastre el Rectángulo demasiado lejos:

import QtQuick
import Qt.labs.animation

Rectangle {
    id: root
    width: 170; height: 120
    color: "green"

    DragHandler {
        id: dragHandler
        yAxis.minimum: -1000
        xAxis.minimum: -1000
        onActiveChanged: if (!active) xbr.returnToBounds();
    }

    BoundaryRule on x {
        id: xbr
        minimum: -50
        maximum: 100
        minimumOvershoot: 40
        maximumOvershoot: 40
    }
}

Tenga en cuenta que una propiedad no puede tener más de una BoundaryRule asignada.

Véase también Animación y transiciones en Qt Quick, Ejemplo de comportamiento, Qt Qmly Qt Quick Ejemplos - Manejadores de Puntero.

Documentación de Propiedades

currentOvershoot : real

Esta propiedad contiene la cantidad en la que el último valor establecido de la propiedad interceptada supera maximum o es inferior a minimum.

Es positiva si el valor de la propiedad supera maximum, negativa si el valor de la propiedad es inferior a minimum, o 0 si el valor de la propiedad está dentro de ambos límites.

easing : enumeration

Esta propiedad contiene la curva de relajación que se aplicará en el modo de rebasamiento (siempre que se infrinja la restricción minimum o maximum, mientras que el valor aún se encuentra dentro del rango de rebasamiento respectivo).

La curva de relajación por defecto es QEasingCurve::OutQuad.

enabled : bool

Esta propiedad indica si la regla se aplicará cuando la propiedad rastreada cambie de valor.

Por defecto se activa BoundaryRule.

maximum : real

Esta propiedad contiene el mayor valor no restringido que la propiedad puede tener. Si la propiedad tiene un valor mayor, estará limitada por easing y maximumOvershoot.

El valor por defecto es 1.

maximumOvershoot : real

Esta propiedad mantiene la cantidad que se permite que la propiedad sea mayor que maximum. Siempre que el valor sea mayor que maximum y menor que maximum + maximumOvershoot, está limitado por la curva easing. Cuando el valor intenta superar maximum + maximumOvershoot se produce una parada brusca.

El valor por defecto es 0.

minimum : real

Esta propiedad contiene el valor más pequeño sin restricciones que la propiedad puede tener. Si la propiedad tiene un valor menor, estará limitada por easing y minimumOvershoot.

El valor por defecto es 0.

minimumOvershoot : real

Esta propiedad mantiene la cantidad que se permite que la propiedad sea menor que minimum. Siempre que el valor sea menor que minimum y mayor que minimum - minimumOvershoot, está limitado por la curva easing. Cuando el valor intenta ir por debajo de minimum - minimumOvershoots se produce una parada brusca.

El valor por defecto es 0.

overshootFilter : enumeration

Esta propiedad especifica la función de agregación que se aplicará al valor de la propiedad interceptada.

Si se establece en BoundaryRule.None (el valor predeterminado), la propiedad interceptada contendrá un valor cuyo rebasamiento esté limitado a currentOvershoot. Si se establece en BoundaryRule.Peak, la propiedad interceptada contendrá un valor cuyo rebasamiento esté limitado a peakOvershoot.

overshootScale : real

Esta propiedad contiene la cantidad en la que easing se escala durante la condición de sobrepaso. Por ejemplo, si un elemento no puede moverse más de 100 píxeles más allá de un límite, y el usuario (por medio de un controlador de entrada) intenta arrastrarlo 100 píxeles más allá del límite, si overshootScale se establece en 1, el usuario tendrá éxito: el único efecto de la curva de flexión es cambiar la velocidad a la que el elemento se mueve desde el límite 0 al límite 100. Pero si se establece en 0,5, proporciona una resistencia tal que cuando el usuario intenta moverse 100 píxeles, el elemento se moverá más allá del límite. Pero si se establece en 0.5, el BoundaryRule proporciona resistencia de tal manera que cuando el usuario intenta mover 100 píxeles, el elemento sólo se moverá 50 píxeles; y la curva de flexión modula la velocidad de movimiento de tal manera que puede moverse en sincronía con el intento de movimiento del usuario al principio, y luego se ralentiza, dependiendo de la forma de la curva de flexión.

El valor por defecto es 0,5.

peakOvershoot : real

Esta propiedad mantiene el valor más positivo o más negativo de currentOvershoot que se ha visto, hasta que se llama a returnToBounds().

Esto puede ser útil cuando se sabe que el valor de la propiedad interceptada fluctúa, y se desea encontrar y reaccionar a la cantidad máxima de rebasamiento en lugar de a las fluctuaciones.

Véase también overshootFilter.

returnDuration : int

Esta propiedad contiene la cantidad de tiempo en milisegundos que returnToBounds() tardará en devolver la propiedad objetivo al límite más cercano. Si se establece en 0, returnToBounds() establecerá la propiedad inmediatamente en lugar de crear un trabajo de animación.

El valor por defecto es 100 ms.

Documentación de señales

returnedToBounds()

Esta señal se emite cuando currentOvershoot vuelve de nuevo a 0, después de que se haya violado la restricción maximum o minimum. Si el retorno es animado, la señal se emite cuando finaliza la animación.

Nota: El manejador correspondiente es onReturnedToBounds.

Véase también returnDuration y returnToBounds().

Documentación del método

bool returnToBounds()

Devuelve la propiedad interceptada a un valor entre minimum y maximum, tal que currentOvershoot y peakOvershoot sean ambos cero. Se animará si returnDuration es mayor que cero.

Devuelve true si el valor necesitaba ser ajustado, o false si ya estaba dentro de los límites.

Véase también returnedToBounds.

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