export component Example inherits Window { width:270px; height:100px;
Flickable { viewport-height:300px; Text { x:0; y:150px; text: "This is some text that you have to scroll to see"; } }}Flickable 是一个底层元素,是可滚动控件(例如 ScrollView)的基础。当 viewport-width 或 viewport-height 分别大于父元素的 width 或 height 时,元素变为可滚动。请注意,Flickable不会创建滚动条。未设置时,viewport-width 和 viewport-height 将根据 Flickable 的子元素自动计算。使用 for循环填充元素时,情况并非如此。这是一个在问题 #407中跟踪的错误。 Flickable 的最大和首选大小基于视口。
不属于布局时,其宽度或高度在未指定时默认为父元素的100%。
##指针事件交互
如果 Flickable 的区域包含使用 TouchArea 进行点击操作的元素(例如 Button控件),则使用以下算法来区分用户滚动或与 TouchArea元素交互的意图:
- 如果
Flickable的interactive属性为false,则所有事件都将转发到底层元素。 - 如果在与
TouchArea交互的事件坐标处接收到按下事件,则该事件将被存储,并且任何后续的移动和释放事件将按以下方式处理: - 如果100ms 内没有任何事件,则存储的按下事件将传递给
TouchArea。 - 如果在100ms过去之前接收到释放事件,则存储的按下事件以及释放事件将立即传递给
TouchArea,并且算法重置。 3.接收到的任何移动事件都将在满足以下所有条件时在Flickable上启动 flicking操作: - 该事件在接收到按下事件后的500ms 内被接收。
- 到按下事件的距离在我们允许移动的方向上超过8个逻辑像素。 如果
Flickable决定 flick,则先前发送到TouchArea的任何按下事件都将跟随一个 exit事件。在接收移动事件的阶段,flickable跟随坐标。 - 如果按下、移动和释放事件的交互从与
TouchArea不相交的坐标开始,则当到按下事件坐标的欧几里得距离超过8个逻辑像素时,Flickable将在指针移动事件上立即 flick。
Flickable边界内发生的所有指针和鼠标事件都由 Flickable本身拦截,不会传播到其下方的任何元素。
##滚轮/滚动事件交互
Flickable 还支持使用鼠标滚轮和触摸板滚动手势进行滚动。 无论 interactive 属性如何,它都会滚动。 如果 Flickable可以在事件方向上滚动,则该事件将被拦截。 如果 Flickable 不能在事件方向上滚动,则该事件将转发给父元素。
##属性
interactive
布尔值 默认:true
Flickable { interactive: false;}
当为 true 时,可以通过单击视口并使用光标拖动来滚动视口。
viewport-width
长度 默认:0px
可滚动元素的总宽度。
viewport-height
长度 默认:0px
可滚动元素的总高度。
viewport-x
长度 (in-out) 默认:0px
可滚动元素相对于 Flickable 的位置。这通常是一个负值。
viewport-y
长度 (in-out) 默认:0px
可滚动元素相对于 Flickable 的位置。这通常是一个负值。
##回调
flicked()
当 viewport-x 或 viewport-y 由于用户操作(拖动、滚动)而改变时调用。