在本页

BoundaryRule QML Type

定义对数值属性可设置值范围的限制。更多

Import Statement: import Qt.labs.animation

属性

信号

方法

详细说明

边界规则(BoundaryRule)定义了特定属性的允许取值范围。当设置的值超出范围时,它会通过缓和曲线施加 "阻力"。

例如,下面的 BoundaryRule 可以防止DragHandler 将矩形拖得太远:

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
    }
}

请注意,一个属性不能有多个指定的 BoundaryRule。

另请参阅 Qt Quick 中的动画和过渡,行为示例Qt QmlQt Quick 示例 - 指针处理程序

属性文档

currentOvershoot : real

该属性保存被拦截属性的最新设置值超过maximum 或小于minimum 的值。

如果属性值超过maximum ,则该值为正;如果属性值小于minimum ,则该值为负;如果属性值在两条边界内,则该值为 0。

easing : enumeration

该属性用于保存在超调模式下应用的缓和曲线(当违反minimummaximum 约束时,而值仍在相应的超调范围内)。

默认的缓和曲线为QEasingCurve::OutQuad

enabled : bool

该属性表示当被跟踪属性的值发生变化时,是否执行该规则。

默认情况下,BoundaryRule

maximum : real

该属性保留了该属性允许具有的最大无约束值。如果将该属性设置为更大的值,它将受到easingmaximumOvershoot 的限制。

默认值为1

maximumOvershoot : real

该属性用于保存允许该属性大于maximum 的值。只要该值大于maximum 且小于maximum + maximumOvershoot ,就会受到easing 曲线的限制。当该值试图超过maximum + maximumOvershoot 时,会出现硬停止。

默认值为 0。

minimum : real

该属性保留了该属性允许具有的最小无约束值。如果将该属性设置为更小的值,它将受easingminimumOvershoot 约束。

默认值为0

minimumOvershoot : real

该属性用于保存允许该属性小于minimum 的值。只要该值小于minimum 且大于minimum - minimumOvershoot ,就会受到easing 曲线的限制。当值试图小于minimum - minimumOvershoots 时,就会被硬停止。

默认值为0

overshootFilter : enumeration

该属性指定了应用于截取属性值的聚合函数。

如果设置为BoundaryRule.None (默认值),则截取的属性值的过冲限制为currentOvershoot 。如果设置为BoundaryRule.Peak ,则截取的属性值的过冲限制为peakOvershoot

overshootScale : real

该属性用于保存easing 在超调条件下的缩放量。例如,如果限制一个 Item 移动超过 100 像素,而用户(通过某个输入处理程序)试图拖动它超过 100 像素,如果 overshootScale 设置为 1,用户就会成功:缓和曲线的唯一作用是改变 Item 从 overshoot 0 到 overshoot 100 的移动速度。但如果设置为 0.5,BoundaryRule ,则会提供阻力,当用户尝试移动 100 像素时,项目只会移动 50 像素;缓和曲线会调节移动速度,使其在开始时与用户尝试的移动同步,然后根据缓和曲线的形状放慢速度。

默认值为 0.5。

peakOvershoot : real

在调用returnToBounds() 之前,该属性保留currentOvershoot 的最大正值或最大负值。

当截获的属性值已知会波动,而您希望找到并对最大超调量而非波动做出反应时,这将非常有用。

另请参见 overshootFilter

returnDuration : int

该属性用于保存returnToBounds() 将目标属性返回到最近边界所需的时间(以毫秒为单位)。如果设置为 0,returnToBounds() 将立即设置属性,而不是创建动画作业。

默认值为 100 毫秒。

信号文档

returnedToBounds()

在违反maximumminimum 约束后,当currentOvershoot 再次返回0 时,会发出该信号。如果是动画返回,则在动画完成时发出该信号。

注: 相应的处理程序是onReturnedToBounds

另请参阅 returnDurationreturnToBounds()。

方法文档

bool returnToBounds()

将截取的属性返回minimummaximum 之间的一个值,这样currentOvershootpeakOvershoot 都为零。如果returnDuration 大于零,则会生成动画。

如果数值需要调整,则返回 true;如果已经在范围内,则返回 false。

另请参见 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.