边界规则 QML 类型

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

导入语句import Qt.labs.animation

属性

信号

方法

详细描述

BoundaryRule 定义了特定属性可以有的值范围。当设置超出范围的值时,它会通过一个缓动曲线应用“阻力”。

例如,以下 BoundaryRule 防止 DragHandler 将 Rectangle 拖动得太远

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

请注意,属性不能有多个已分配的边界规则。

另请参阅Qt Quick 中的动画和转场行为示例Qt QmlQt Quick 示例 - 指针处理器

属性文档

currentOvershoot : qreal

此属性包含被截获的属性最近设置的值的超出 最大值 或小于 最小值 的量。

如果属性值超过 最大值,则为正值;如果属性值小于 最小值,则为负值;如果属性值在两个边界之间,则为 0。


easing : 枚举

该属性保存了在超调模式下(当最小约束 minimum 或最大约束 maximum 被违反时,而值仍在相应的超调范围内)应应用的儿子曲线。

默认的缓动曲线是 QEasingCurve::OutQuad


enabled : bool

该属性保存了在跟踪的属性值变更时是否将强制执行规则。

默认情况下,BoundaryRule 是启用的。


maximum : qreal

该属性保存了属性允许具有的最大未约束值。如果将该属性设置得更大,它将通过 easingmaximumOvershoot 被约束。

默认值为 1


maximumOvershoot : qreal

该属性保存了属性超出最大值 maximum 的量。每当值大于 maximum 而小于 maximum + maximumOvershoot 时,它将由缓动曲线约束。当值尝试超过 maximum + maximumOvershoot 时,会有一个硬停点。

默认值为0。


minimum : qreal

该属性保存了属性允许具有的最小未约束值。如果将该属性设置得更小,它将通过 easingminimumOvershoot 被约束。

默认值为 0


minimumOvershoot : qreal

该属性保存了属性允许小于 minimum 的量。每当值小于 minimum 而大于 minimum - minimumOvershoot 时,它将由缓动曲线约束。当值尝试低于 minimum - minimumOvershoots 时,会有一个硬停点。

默认值为 0


overshootFilter : enumeration

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

如果设置为 BoundaryRule.None(默认),拦截的属性将持有在 currentOvershoot 限制之内的值。如果设置为 BoundaryRule.Peak,拦截的属性将持有在 peakOvershoot 限制之内的值。


overshootScale : qreal

该属性表示在超调条件下,缓动(easing)值的缩放量。例如,如果一个项目限制在某个限制之外移动不超过100像素,而用户(通过某些输入处理器)试图将其移动超出100像素,如果overshootScale设置为1,用户将成功移动:缓动曲线唯一的效果就是改变项目从超出0到超出100的移动速率。但如果设置为0.5,边界规则(BoundaryRule)将提供阻力,当用户尝试移动100像素时,项目只会移动50像素;而缓动曲线将调节移动速率,使其可能开始与用户的尝试移动同步,然后根据缓动曲线的形状减速。

默认值为0.5。


peakOvershoot : qreal

该属性在调用returnToBounds()之前,存储了currentOvershoot遇到的最正或最负值。

当拦截的属性值已知会波动时,这非常有用,您希望找到并响应最大超调量,而不是波动。

另请参阅overshootFilter


returnDuration : int

该属性表示returnToBounds()将花费多少毫秒将目标属性返回到最近的边缘。如果设置为0,returnToBounds()将立即设置属性,而不是创建动画任务。

默认值为100毫秒。


信号文档

returnedToBounds()

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

注意:对应的事件处理器为onReturnedToBounds

另请参阅returnDurationreturnToBounds()。


方法文档

bool returnToBounds()

返回值为截获的属性在minimummaximum之间的值,以使得currentOvershootpeakOvershoot都为零。如果returnDuration大于零,这将进行动画处理。

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

另请参阅returnedToBounds


© 2024 Qt公司。本文档中的文档贡献是各自所有者的版权。本文档受GNU自由文档许可证版本1.3的许可,由自由软件基金会发布。Qt及其相关徽标是芬兰和/或世界各地的Qt公司的商标。所有其他商标均为其各自所有者的财产。