属性介绍
1.Transition add
这个属性持有应用于添加到视图中的项目的过渡。
例如,这里是一个指定了这种过渡的视图。
ListView {
...
add: Transition {
NumberAnimation { properties: "x,y"; from: 100; duration: 1000 }
}
}
每当一个项目被添加到上述视图中,该项目将在一秒钟内从(100,100)的位置被动画化到视图中的最终x,y位置。该过渡只适用于被添加到视图中的新项目;它不适用于下面因添加新项目而被移位的项目。要对移位的项目制作动画,请设置移位或addDisplaced属性。
关于如何使用视图过渡的更多细节和例子,请参阅ViewTransition文档。
注意:此过渡不应用于视图最初被填充时或视图模型改变时创建的项目。(此外,这个过渡不应该对新项目的高度进行动画化;这样做会导致新项目下面的任何项目被布置在错误的位置上。相反,高度可以在委托中的onAdd处理程序中被动画化。
另请参阅addDisplaced、populate和ViewTransition。
2.Transition addDisplaced
此属性持有应用于视图中因其他项目加入而被替换的项目的过渡。
例如,这里是一个指定了这种过渡的视图。
ListView {
...
addDisplaced: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
每当一个项目被添加到上述视图中时,新项目下面的所有项目都会被移位,导致它们在视图中向下移动(如果是水平方向的,则向侧面移动)。当这种位移发生时,项目在视图中移动到它们的新的x,y位置时,将在一秒钟内通过NumberAnimation进行动画处理,具体操作如下。这个过渡并不适用于被添加到视图中的新项目;要对添加的项目制作动画,请设置add属性。
如果一个项目同时被多种类型的操作移位,则不定义是否会应用addDisplaced、moveDisplaced或removeDisplaced过渡。此外,如果没有必要根据一个项目是否被添加、移动或移除操作取代而指定不同的过渡,可以考虑设置deposit属性。
关于如何使用视图过渡的更多细节和例子,请参阅ViewTransition文档。
注意:此过渡不应用于视图最初被填充时创建的项目,或视图的模型发生变化时创建的项目。在这些情况下,会应用populate过渡来代替。
另请参见 displaced、add、populate 和 ViewTransition。
3.int cacheBuffer
这个属性决定了是否在视图的可见区域之外保留委托。
如果这个值大于0,视图可以保留尽可能多的实例化的代表,因为它可以容纳在指定的缓冲区内。例如,如果在一个垂直视图中,代表的高度是20像素,cacheBuffer设置为40,那么在可见区域上方和下方最多可以创建/保留2个代表。缓冲的委派是异步创建的,允许在多个帧中进行创建,并减少跳帧的可能性。为了提高绘制性能,可见区域外的代表不会被绘制。
这个属性的默认值与平台有关,但通常是一个大于0的值。负值会被忽略。
请注意,cacheBuffer不是一个像素缓冲器--它只维护额外的实例化的委托。
注意:设置这个属性并不能代替创建有效的委托。它可以提高滚动行为的流畅性,但代价是额外的内存使用。委托中的对象和绑定越少,视图的滚动就越快。重要的是要意识到,设置cacheBuffer只能推迟由慢速委托引起的问题,它并不是这种情况的解决方案。
cacheBuffer在任何由displayMarginBeginning或displayMarginEnd指定的显示边缘之外运行。
4.int count
该属性持有视图中的项目数量。
5.int currentIndex
currentIndex属性持有当前项目的索引,currentItem持有当前项目。将currentIndex设置为-1将清除高亮,并将currentItem设置为空。
如果highlightFollowsCurrentItem为真,设置这些属性中的任何一个都会平滑地滚动ListView,从而使当前项目变得可见。
注意,当前项目的位置可能只是近似的,直到它在视图中变得可见。
6.Item currentItem
currentIndex属性持有当前项目的索引,currentItem持有当前项目。将currentIndex设置为-1将清除高亮,并将currentItem设置为null。
如果highlightFollowsCurrentItem为真,设置这些属性中的任何一个都会平滑地滚动ListView,从而使当前项目变得可见。
注意,当前项目的位置可能只是近似的,直到它在视图中变得可见。
7.string currentSection
此属性持有当前处于视图开头的部分。
8.delegate : Component
委托提供了一个模板,定义了由视图实例化的每个项目。索引作为一个可访问的索引属性被公开。根据数据模型的类型,模型的属性也是可用的。
委托中的对象和绑定的数量对视图的弹跳性能有直接影响。如果可能的话,将委托的正常显示不需要的功能放在Loader中,这样可以在需要时加载额外的组件。
ListView会根据委托中根项的大小来布置项目。
建议委托体的大小是一个整数,以避免项目的亚像素对齐。
委托实例的默认堆叠顺序是1。
注意:代理根据需要被实例化,并且可以在任何时候被销毁。它们是ListView的contentItem的父级对象,而不是视图本身。状态不应该被存储在一个委托中。
请参阅ListView中的堆叠顺序。
9.displaced : Transition
此属性持有通用过渡,以应用于被任何影响视图的模型操作所取代的项目。
这是一个方便的方法,用于指定应用于被添加、移动或移除操作所取代的任何项目的通用过渡,而不必指定单独的addDisplaced、moveDisplaced和removeDisplaced属性。例如,这里有一个指定位移过渡的视图。
ListView {
...
displaced: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
当任何项目在上述视图中被添加、移动或删除时,它下面的项目会被移位,导致它们在视图中向下移动(如果是水平方向的,则向侧面移动)。当这种位移发生时,项目在视图中移动到其新的x,y位置时,将按照指定的NumberAnimation在一秒钟内产生动画。
如果一个视图指定了这个通用位移过渡以及一个特定的addDisplaced、moveDisplaced或removeDisplaced过渡,那么当相关操作发生时,将使用更具体的过渡而不是通用位移过渡,前提是更具体的过渡没有被禁用(通过设置enabled为false)。如果它确实被禁用了,就会应用通用位移过渡。
关于如何使用视图转换的更多细节和例子,请参见ViewTransition文档。
另请参见addDisplaced、moveDisplaced、removeDisplaced和ViewTransition。
10.int displayMarginBeginning
此属性允许委托在视图几何体之外显示。
如果此值为非零,视图将在视图的开始之前或结束之后创建额外的委托。视图将创建尽可能多的代表,以适应指定的像素大小。
例如,如果在一个垂直视图中,代表的高度是20像素,displayMarginBeginning和displayMarginEnd都被设置为40,那么上面的2个代表和下面的2个代表将被创建和显示。
默认值是0。
这个属性是为了允许某些UI配置,而不是作为一个性能优化。如果你想在视图的几何体之外创建委托,出于性能的考虑,你可能想使用cacheBuffer属性来代替。
这个QML属性是在QtQuick 2.3中引入的。
11.displayMarginEnd : int
这个属性允许代表在视图几何体之外显示。
如果这个值为非零,视图将在视图的开始之前或结束之后创建额外的委托。视图将创建尽可能多的代表,以适应指定的像素大小。
例如,如果在一个垂直视图中,代表的高度是20像素,displayMarginBeginning和displayMarginEnd都被设置为40,那么上面的2个代表和下面的2个代表将被创建和显示。
默认值是0。
这个属性是为了允许某些UI配置,而不是作为一个性能优化。如果你想在视图的几何体之外创建委托,出于性能的考虑,你可能想使用cacheBuffer属性来代替。
这个QML属性是在QtQuick 2.3中引入的。
12.enumeration effectiveLayoutDirection
这个属性持有一个水平方向的列表的有效布局方向。
当使用附加属性LayoutMirroring::enabled用于locale布局时,水平列表的视觉布局方向将被镜像。然而,属性layoutDirection将保持不变。
另请参阅ListView::layoutDirection和LayoutMirroring。
13.Component footer
此属性持有作为页脚的组件。
每个视图都会创建一个页脚组件的实例。页脚被定位在视图的末尾,在任何项目之后。页脚的默认堆叠顺序是1。
另见页眉、footerItem和ListView中的堆叠顺序。
14.Item footerItem
它持有从页脚组件创建的页脚项目。
每个视图都会创建一个页脚组件的实例。页脚被放置在视图的末尾,在任何项目之后。脚注的默认堆叠顺序是1。
另请参见footer、headerItem和ListView中的堆叠顺序。
15.enumeration footerPositioning
这个属性决定了页脚项目的定位。
可能的值是。
ListView.InlineFooter(默认)--页脚被定位在内容的末尾,像普通项目一样与内容一起移动。
ListView.OverlayFooter - 页脚被定位在视图的末端。
ListView.PullBackFooter - 页脚被放置在视图的末端。通过向后移动内容可以推开页脚,通过向前移动内容可以拉回来。
注意:这个属性对页脚的堆叠顺序没有影响。例如,如果使用ListView.OverlayFooter时,页脚应该显示在委托项目的上方,它的Z值应该设置为高于委托项目的值。更多信息,请参阅ListView中的堆叠顺序。
这个QML属性是在Qt 5.4中引入的。
16.Component header
这个属性持有要用作页眉的组件。
每个视图都会创建一个页眉组件的实例。头部被放置在视图的开头,在任何项目之前。头部的默认堆叠顺序是1。
参见footer, headerItem, and Stacking Order in ListView。
17.Item headerItem
这个项目持有从页眉组件创建的页眉项目。
每个视图都会创建一个标题组件的实例。头部被放置在视图的开头,在任何项目之前。页眉的默认堆叠顺序是1。
另请参阅header、footerItem和ListView的堆叠顺序。
18.enumeration headerPositioning
这个属性决定了页眉项目的定位。
可能的值是。
- ListView.InlineHeader(默认)--页眉被定位在内容的开头,像普通项目一样与内容一起移动。
- ListView.OverlayHeader - 标题被定位在视图的开头。
- ListView.PullBackHeader - 标题位于视图的开头。通过向前移动内容可以推开标题,通过向后移动内容可以拉回标题。
注意:这个属性对页眉的堆叠顺序没有影响。例如,如果使用ListView.OverlayHeader时,页眉应该显示在委托项目的上方,它的Z值应该被设置为高于委托项目的值。更多信息,请参阅ListView中的堆叠顺序。
这个QML属性是在Qt 5.4中引入的。
19.Component highlight
这个属性持有用作高亮的组件。
每个列表都会创建一个高亮组件的实例。除非 highlightFollowsCurrentItem 属性为 false,否则产生的组件实例的几何形状由列表管理,以便与当前项目保持一致。高亮项的默认堆叠顺序是0。
参见highlightItem、highlightFollowsCurrentItem、ListView高亮示例和ListView的堆叠顺序。.
20.bool highlightFollowsCurrentItem
该属性表示高光是否由视图管理。
如果该属性为true(默认值),高光会被平滑地移动,以跟随当前项目。否则,高亮部分不会被视图移动,任何移动都必须由高亮部分来实现。
下面是一个由SpringAnimation项目定义运动的高光。
Component {
id: highlight
Rectangle {
width: 180; height: 40
color: "lightsteelblue"; radius: 5
y: list.currentItem.y
Behavior on y {
SpringAnimation {
spring: 3
damping: 0.2
}
}
}
}
ListView {
id: list
width: 180; height: 200
model: ContactModel {}
delegate: Text { text: name }
highlight: highlight
highlightFollowsCurrentItem: false
focus: true
}
请注意,高光动画也会影响到视图的滚动方式。这是因为视图的移动是为了将高光维持在首选的高光范围内(或可见视口)。
参见highlight和highlightMoveVelocity。
21.Item highlightItem
这是一个由高亮组件创建的高亮项目。
除非highlightFollowsCurrentItem被设置为false,否则highlightItem是由视图管理的。高亮项的默认堆叠顺序是0。
参见highlight, highlightFollowsCurrentItem, and Stacking Order in ListView。
22.int highlightMoveDuration
这些属性控制高亮委托的移动和调整大小的动画的速度。
highlightFollowsCurrentItem必须为真,这些属性才会产生作用。
速度属性的默认值是400像素/秒。持续时间属性的默认值是-1,也就是说,高光会花尽可能多的时间以设定的速度移动。
这些属性与SmoothedAnimation具有相同的特性。
也请看highlightFollowsCurrentItem。
23.real highlightMoveVelocity
这些属性控制高亮委托的移动和调整大小动画的速度。
highlightFollowsCurrentItem必须为真,这些属性才会产生效果。
速度属性的默认值是400像素/秒。持续时间属性的默认值是-1,也就是说,高光会花尽可能多的时间以设定的速度移动。
这些属性与SmoothedAnimation具有相同的特性。
也请看highlightFollowsCurrentItem。
24.enumeration highlightRangeMode
这些属性定义了视图中高亮的首选范围(对于当前项目)。首选HighlightBegin值必须小于首选HighlightEnd值。
这些属性会在滚动列表时影响当前项的位置。例如,如果当前选择的项目在视图滚动时应该保持在列表的中间位置,那么将preferredHighlightBegin和preferredHighlightEnd的值设置为中间项目的顶部和底部坐标。如果以编程方式改变currentItem,列表将自动滚动,使当前项位于视图的中间。此外,无论是否存在高亮,都会发生当前项目索引的行为。
highlightRangeMode的有效值是。
- ListView.ApplyRange - 视图试图在范围内保持高亮。但是,在列表的两端或由于鼠标的交互,高亮会移到范围之外。
- ListView.StrictlyEnforceRange - 高亮部分永远不会移动到范围之外。如果键盘或鼠标操作会导致高亮部分移出范围,则当前项目会发生变化。
- ListView.NoHighlightRange - 这是默认值。
25.int highlightResizeDuration
这些属性控制了高亮代理的移动和调整大小的动画速度。
HighlightFollowsCurrentItem必须为真,这些属性才会生效。
速度属性的默认值是400像素/秒。持续时间属性的默认值是-1,也就是说,高光会花尽可能多的时间以设定的速度移动。
这些属性与SmoothedAnimation具有相同的特性。
也请看highlightFollowsCurrentItem。
26.real highlightResizeVelocity
这些属性控制高亮委托的移动和调整大小动画的速度。
highlightFollowsCurrentItem必须为真,这些属性才会产生效果。
速度属性的默认值是400像素/秒。持续时间属性的默认值是-1,也就是说,高光会花尽可能多的时间以设定的速度移动。
这些属性与SmoothedAnimation具有相同的特性。
请参阅highlightFollowsCurrentItem。
27.bool keyNavigationEnabled
此属性持有列表的按键导航是否被启用。
如果为真,用户可以用键盘导航视图。它对于需要选择性地启用或禁用鼠标和键盘交互的应用程序非常有用。
默认情况下,该属性的值被绑定为交互式,以确保现有应用程序的行为兼容性。当明确设置时,它将不再被绑定到交互式属性。
这个QML属性是在Qt 5.7中引入的。
也请看interactive。
28.bool keyNavigationWraps
这个属性持有列表是否包裹了按键导航。
如果这是真的,按键导航会将当前的项目选择移到列表的末端,而不是包裹起来,将选择移到列表的开始,反之亦然。
默认情况下,按键导航是不被包裹的。
29.enumeration layoutDirection
此属性持有水平方向的列表的布局方向。
可能的值。
- Qt.LeftToRight(默认) - 项目将从左到右排列。
- Qt.RightToLeft - 项目将从右至左排列。
如果方向是Qt.Vertical,设置该属性没有影响。
参见ListView::effectiveLayoutDirection和ListView::verticalLayoutDirection。
30.model model
此属性持有为列表提供数据的模型。
该模型提供了用于创建视图中的项目的数据集。模型可以使用ListModel、XmlListModel或VisualItemModel直接在QML中创建,或者由C++模型类提供。如果使用C++模型类,它必须是QAbstractItemModel的子类或一个简单的列表。
也请看数据模型。
31.Transition move
这个属性持有要应用于视图中由于视图模型中的移动操作而被移动的项目的过渡。
例如,这里是一个指定了这样一个过渡的视图。
ListView {
...
move: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
每当模型执行移动操作来移动一组特定的索引时,视图中各自的项目将在一秒钟内被动画化到视图中的新位置。这种转换只适用于模型中作为移动操作主体的项目;它不适用于它们下面被移动操作移位的项目。要对被移位的项目制作动画,请设置移位或moveDisplaced属性。
关于如何使用视图转换的更多细节和例子,请参阅ViewTransition文档。
另请参见moveDisplaced和ViewTransition。
32.Transition moveDisplaced
这个属性持有要应用于被视图模型中的移动操作所取代的项目的过渡。
例如,这里是一个指定了这种过渡的视图。这个属性持有要应用于被视图模型中的移动操作所取代的项目的过渡。
例如,这里是一个指定了这种过渡的视图。
ListView {
...
moveDisplaced: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
每当模型执行移动操作来移动一组特定的索引时,移动操作的源索引和目标索引之间的项目就会发生位移,导致它们在视图中向上或向下移动(如果是水平方向的,则向侧面移动)。当这种位移发生时,项目在视图中移动到其新的x,y位置时,将按照指定的NumberAnimation在一秒钟内产生动画。这个过渡并不适用于作为移动操作的实际对象的项目;要使被移动的项目成为动画,请设置移动属性。
如果一个项目同时被多种类型的操作移位,则不定义是否会应用addDisplaced、moveDisplaced或removeDisplaced过渡。此外,如果没有必要根据一个项目是否被添加、移动或移除操作取代而指定不同的过渡,可以考虑设置deposit属性。
关于如何使用视图过渡的更多细节和例子,请参阅ViewTransition文档。
另请参见 displaced、move 和 ViewTransition。
33.enumeration orientation
此属性持有列表的方向。
可能的值。
- ListView.Horizontal - 项目以水平方向排列
- ListView.Vertical(默认)--项目被垂直放置。
参见 Flickable Direction.
34.Transition populate
此属性持有要应用于最初为视图创建的项目的过渡。
它适用于所有创建的项目,当:
- 视图首次被创建
- 视图的模型改变
- 视图的模型被重置,如果该模型是QAbstractItemModel的子类。
例如,这里是一个指定了这种转换的视图。:
ListView {
...
populate: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
当视图被初始化时,该视图将为视图创建所有必要的项目,然后在一秒钟内将它们动画化到视图中的正确位置。
关于如何使用视图转换的更多细节和例子,请参见ViewTransition文档。
另请参见添加和ViewTransition。
35.real preferredHighlightBegin
这些属性定义了视图中高亮显示的首选范围(对于当前项目)。preferredHighlightBegin值必须小于preferredHighlightEnd值。
这些属性在滚动列表时影响当前项的位置。例如,如果当前选择的项目在视图滚动时应该保持在列表的中间位置,那么将preferredHighlightBegin和preferredHighlightEnd的值设置为中间项目的顶部和底部坐标。如果以编程方式改变currentItem,列表将自动滚动,使当前项位于视图的中间。此外,无论是否存在高亮,都会发生当前项目索引的行为。
highlightRangeMode的有效值是。
- ListView.ApplyRange - 视图试图在范围内保持高亮。但是,在列表的两端或由于鼠标的交互,高亮会移到范围之外。
- ListView.StrictlyEnforceRange - 高亮部分永远不会移动到范围之外。如果键盘或鼠标操作会导致高亮部分移出范围,则当前项目会发生变化。
- ListView.NoHighlightRange - 这是默认值。
36.real preferredHighlightEnd
这些属性定义了视图中高亮的首选范围(对于当前项目)。preferredHighlightBegin值必须小于preferredHighlightEnd值。
这些属性在滚动列表时影响当前项的位置。例如,如果当前选择的项目在视图滚动时应该保持在列表的中间位置,那么将preferredHighlightBegin和preferredHighlightEnd的值设置为中间项目的顶部和底部坐标。如果以编程方式改变currentItem,列表将自动滚动,使当前项位于视图的中间。此外,无论是否存在高亮,都会发生当前项目索引的行为。
highlightRangeMode的有效值是。
- ListView.ApplyRange - 视图试图在范围内保持高亮。但是,在列表的两端或由于鼠标的交互,高亮会移到范围之外。
- ListView.StrictlyEnforceRange - 高亮部分永远不会移动到范围之外。如果键盘或鼠标操作会导致高亮部分移出范围,则当前项目会发生变化。
- ListView.NoHighlightRange - 这是默认值。
37.Transition remove
此属性持有应用于从视图中移除的项目的过渡。
例如,这里是一个指定了这种过渡的视图。:
ListView {
...
remove: Transition {
ParallelAnimation {
NumberAnimation { property: "opacity"; to: 0; duration: 1000 }
NumberAnimation { properties: "x,y"; to: 100; duration: 1000 }
}
}
}
每当一个项目从上述视图中被移除时,该项目将在一秒钟内被动画化到(100,100)的位置,同时也会将其不透明度变为0。要使被移走的项目产生动画效果,请设置deposition或removeDisplaced属性。
请注意,当过渡被应用时,项目已经从模型中移除;任何对被移除索引的模型数据的引用都将无效。
此外,如果为一个委托项目设置了 delayRemove 附属属性,那么删除过渡将不会被应用,直到 delayRemove 再次变为 false。
关于如何使用视图过渡的更多细节和示例,请参阅ViewTransition文档。
另请参阅 removeDisplaced 和 ViewTransition。
38.Transition removeDisplaced
此属性持有应用于视图中因移除视图中的其他项目而被替换的项目的过渡。
例如,这里是一个指定了这种过渡的视图。:
ListView {
...
removeDisplaced: Transition {
NumberAnimation { properties: "x,y"; duration: 1000 }
}
}
每当一个项目从上面的视图中移出时,它下面的所有项目都会被移位,导致它们在视图中向上移动(如果是水平方向,则向侧面移动)。当这个位移发生时,项目在视图中移动到它们的新的x,y位置时,将通过NumberAnimation在一秒钟内进行动画处理,具体操作如下。这个过渡并不应用于实际上已经从视图中移除的项目;要对移除的项目制作动画,请设置移除属性。
如果一个项目同时被多种类型的操作移位,则不定义是否会应用addDisplaced、moveDisplaced或removeDisplaced过渡。此外,如果没有必要根据一个项目是否被添加、移动或移除操作取代而指定不同的过渡,可以考虑设置deposit属性。
关于如何使用视图过渡的更多细节和例子,请参阅ViewTransition文档。
另请参见 displaced、remove 和 ViewTransition。
39.section group
- section.property : string
- section.criteria : enumeration
- section.delegate : Component
- section.labelPositioning : enumeration
这些属性决定了要被评估的表达式和部分标签的外观。
section.property 保存作为每个部分基础的属性的名称。
section.criteria 保存了基于 section.property 形成每个部分的标准。这个值可以是以下之一。
- ViewSection.FullString(默认)--根据section.property的值来创建章节。
- ViewSection.FirstCharacter - 根据section.property值的第一个字符来创建章节(例如,对于地址簿来说,'A'、'B'、'C'等章节)。
在确定章节边界时,会使用不区分大小写的比较方法。
section.delegate持有每个部分的委托组件。节的委托实例的默认堆叠顺序是2。
section.labelPositioning决定了当前和/或下一个部分的标签是否坚持在视图的开始/结束位置,以及标签是否显示在行内。这个值可以是以下的组合。
- ViewSection.InlineLabels - 节的标签在分隔节的项目代表之间在线显示(默认)。
- ViewSection.CurrentLabelAtStart - 当前部分的标签在移动时坚持在视图的开始位置。
- ViewSection.NextLabelAtEnd - 当它被移动时,下一个部分的标签(超出所有可见部分)会被粘在视图的末端。
注意:启用ViewSection.NextLabelAtEnd需要视图提前扫描下一个部分,这对性能有影响,特别是对于较慢的模型。
列表中的每个项目都有名为ListView.section、ListView.previousSection和ListView.nextSection的附加属性。
例如,这里是一个显示动物列表的ListView,它被分成几个部分。ListView中的每个项目都被放置在不同的部分,这取决于模型项目的 "大小 "属性。sectionHeading委托组件提供了浅蓝色的条,标志着每个部分的开始。
// The delegate for each section header
Component {
id: sectionHeading
Rectangle {
width: container.width
height: childrenRect.height
color: "lightsteelblue"
Text {
text: section
font.bold: true
font.pixelSize: 20
}
}
}
ListView {
id: view
anchors.top: parent.top
anchors.bottom: buttonBar.top
width: parent.width
model: animalsModel
delegate: Text { text: name; font.pixelSize: 18 }
section.property: "size"
section.criteria: ViewSection.FullString
section.delegate: sectionHeading
}
注意:在ListView中添加章节并不会自动按章节标准重新排列列表项。如果模型不按章节排序,那么创建的章节有可能不是唯一的;不同章节之间的每个边界都会导致创建一个章节标题,即使该章节存在于其他地方。
参见ListView示例和ListView中的堆叠顺序。
40.enumeration snapMode
这个属性决定了视图的滚动在拖动或滑动后将如何解决。可能的值是。
- ListView.NoSnap(默认)--视图在可见区域内的任何地方停止。
- ListView.SnapToItem - 视图以一个与视图起始点对齐的项目进行结算。
- ListView.SnapOneItem--当鼠标按钮被释放时,视图停留在离第一个可见项目不超过一个项目的地方。这种模式对于一次移动一个页面特别有用。
snapMode并不影响currentIndex。要在列表被移动时更新currentIndex,请将highlightRangeMode设置为ListView.StrictlyEnforceRange。
请参阅highlightRangeMode。
41.real spacing
该属性用于保存项目之间的间距。
默认值为0。
42.enumeration verticalLayoutDirection
此属性持有垂直方向的列表的布局方向。
可能的值。
- ListView.TopToBottom (默认) - 项目从视图的顶部向下布局到视图的底部。
- ListView.BottomToTop - 项目从视图的底部往上排到视图的顶部。
如果方向是Qt.Horizontal,设置此属性没有影响。
另请参阅ListView::layoutDirection。
附加属性说明
43.ListView.delayRemove : bool
这个附加属性决定了委托是否可以被销毁。它被附加到每个委托的实例上。默认值为false。
有时有必要延迟销毁一个项目,直到动画完成。下面的委托示例确保在项目从列表中删除之前完成动画。
Component {
id: delegate
Item {
ListView.onRemove: SequentialAnimation {
PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: true }
NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: false }
}
}
}
如果指定了移除过渡,在delayRemove返回为false之前,它将不会被应用。
44.bool ListView.isCurrentItem
如果该委托是当前项目,该附加属性为真,否则为假。
它被附加到该委托的每个实例上。
这个属性可以用来调整当前项目的外观,例如:
ListView {
width: 180; height: 200
Component {
id: contactsDelegate
Rectangle {
id: wrapper
width: 180
height: contactInfo.height
color: ListView.isCurrentItem ? "black" : "red"
Text {
id: contactInfo
text: name + ": " + number
color: wrapper.ListView.isCurrentItem ? "red" : "black"
}
}
}
model: ContactModel {}
delegate: contactsDelegate
focus: true
}
45.string ListView.nextSection
这个附加属性持有下一个元素的部分。
它被附加到委托的每个实例。
该部分会使用部分属性进行评估。
46.string ListView.previousSection
这个附加属性持有上一个元素的部分。
它被附加到委托的每个实例上。
该部分使用部分属性进行评估。
47.string ListView.section
这个附加属性持有这个元素的部分。
它被附加到委托的每个实例上。
节段是使用节段属性来评估的。
48.ListView ListView.view
此附加属性持有管理此委托实例的视图。
它被附加到委托的每个实例上,也被附加到页眉、页脚、章节和高亮委托上。
附加信号说明
add()
这个附加信号在一个项目被添加到视图中后立即发出。
如果指定了一个添加过渡,它将在处理这个信号后立即应用。
相应的处理程序是onAdd。
remove()
这个附加信号是在一个项目从视图中移除之前立即发出的。
如果指定了移除过渡,那么它将在此信号处理后被应用,前提是delayRemove为假。
相应的处理程序是onRemove。
函数说明
decrementCurrentIndex()
递减当前索引。如果keyNavigationWraps为真,并且当前处于起始位置,那么当前索引将被包裹起来。如果计数为零,这个方法没有效果。
注意:方法应该只在组件完成后调用。
forceLayout()
对模型变化的响应通常是分批进行的,每帧只发生一次。这意味着在脚本块中,底层模型有可能已经改变,但ListView还没有跟上。
这个方法迫使ListView立即响应模型中任何未完成的变化。
注意:方法应该只在组件完成后调用。
这个QML方法是在Qt 5.1中引入的。
incrementCurrentIndex()
递增当前的索引。如果keyNavigationWraps为真,并且当前处于末尾,那么当前索引将被包裹起来。如果计数为零,这个方法就没有效果。
注意:方法应该只在组件完成后调用。
int indexAt(real x, real y)
返回包含内容坐标中的点x, y的可见项目的索引。如果在指定的点上没有项目,或者该项目不可见,则返回-1。
如果该项目在可见区域之外,则返回-1,而不考虑在滚动进入视图时该点是否有项目存在。
注意:方法应该只在组件完成后调用。
Item itemAt(real x, real y)
返回包含内容坐标中x, y点的可见项目。如果在指定的点上没有项目,或者该项目不可见,则返回null。
如果该项目在可见区域之外,则返回null,无论滚动到该点时是否有项目存在。
注意:方法应该只在组件完成后调用。
positionViewAtBeginning()
在考虑到任何页眉或页脚的情况下,将视图定位在开始或结束的位置。
不建议使用contentX或contentY来定位视图在一个特定的索引。这是不可靠的,因为从列表的开始删除项目并不会导致所有其他项目被重新定位,而且视图的实际开始可能会根据代表的大小而变化。
注意:方法应该只在组件完成后调用。要在启动时定位视图,这个方法应该由Component.onCompleted调用。例如,要在启动时将视图定位在末端:
Component.onCompleted: positionViewAtEnd()
positionViewAtEnd()
将视图定位在开头或结尾,并考虑到任何页眉或页脚。
不建议使用contentX或contentY来定位视图在一个特定的索引。这是不可靠的,因为从列表的开始删除项目并不会导致所有其他项目被重新定位,而且视图的实际开始可能会根据代表的大小而变化。
注意:方法应该只在组件完成后调用。要在启动时定位视图,这个方法应该由Component.onCompleted调用。例如,要在启动时将视图定位在末端:
Component.onCompleted: positionViewAtEnd()
positionViewAtIndex(int index, PositionMode mode)
对视图进行定位,使索引位于模式指定的位置。
- ListView.Beginning - 将项目置于视图的顶部(或水平方向的左侧)。
- ListView.Center - 将项目置于视图的中心位置。
- ListView.End - 将项目置于视图的底部(或水平方向的右侧)。
- ListView.Visible - 如果项目的任何部分是可见的,则不采取任何行动,否则将项目引入视图。
- ListView.Contain - 确保整个项目都是可见的。如果项目比视图大,那么项目将被定位在视图的顶部(或水平方向的左侧)。
- ListView.SnapPosition - 将项目定位在首选的HighlightBegin处。这个模式只有在highlightRangeMode是StrictlyEnforceRange或者通过snapMode启用了snapping时才有效。
如果将视图定位在索引处会导致在视图的开始或结束处显示空的空间,那么视图将被定位在边界处。
不建议使用contentX或contentY来定位视图在特定的索引处。这是不可靠的,因为从列表的开始删除项目不会导致所有其他项目被重新定位,而且视图的实际开始可能根据代表的大小而变化。正确的方法是用positionViewAtIndex将一个项目带入视图。
注意:方法应该只在组件完成后调用。要在启动时定位视图,这个方法应该由Component.onCompleted调用。例如,要在结束时定位视图:
Component.onCompleted: positionViewAtIndex(count - 1, ListView.Beginning)