QML类型:PathView

一、描述

PathView继承自 Item,用于显示来自内置 QML 类型(如 ListModel XmlListModel)或从 QAbstractListModel 继承的 C++ 中定义的自定义模型类创建的模型的数据。

为路径上的每个项目实例化委托。可以轻弹项目以沿路径移动它们。

import QtQuick 2.9
import QtQuick.Window 2.2

Window
{
    id:root
    visible: true
    width: 640
    height: 480

    Rectangle
    {
        anchors.fill: parent
        Component
        {
            id: delegate
            Column
            {
                id: wrapper
                opacity: PathView.isCurrentItem ? 1 : 0.5
                Image
                {
                    anchors.horizontalCenter: nameText.horizontalCenter
                    width: 64; height: 64
                    source: icon
                }
                Text
                {
                    id: nameText
                    text: name
                    font.pointSize: 16
                }
            }
        }

        PathView
        {
            anchors.fill: parent
            model: ListModel
            {
                ListElement
                {
                    name: "张三"
                    icon: "qrc:/www.jpg"
                }
                ListElement
                {
                    name: "李四"
                    icon: "qrc:/www.jpg"
                }
                ListElement
                {
                    name: "王五"
                    icon: "qrc:/www.jpg"
                }
            }

            delegate: delegate
            path: Path
            {
                startX: 120; startY: 100
                PathQuad { x: 120; y: 25; controlX: 260; controlY: 75 }
                PathQuad { x: 120; y: 100; controlX: -20; controlY: 75 }
            }
        }
    }
}

PathView 不会自动处理键盘导航。这是因为用于导航的键将取决于路径的形状。通过将 focus 设置为 true 并调用 decrementCurrentIndex() 或 incrementCurrentIndex() 可以简单地添加导航。

使用左右方向键进行导航:

            focus: true
            Keys.onLeftPressed: decrementCurrentIndex()
            Keys.onRightPressed: incrementCurrentIndex()

PathView 不会自动启用裁剪。如果视图没有被另一个项目或屏幕裁剪,则有必要设置 clip: true 以便很好地裁剪视图外的项目。

二、属性成员

1、cacheItemCount : int

路径外缓存的最大项目数。

例如,模型包含 20 个项目、pathItemCount 为 10、cacheItemCount 为 4 的 PathView 将创建最多 14 个项目,其中 10 个在路径上可见,4 个不可见的缓存项目。

委托中的对象和绑定越少,滚动视图的速度就越快。设置 cacheItemCount 只会推迟由缓慢加载委托引起的问题,它不是这种情况的解决方案。

2、dragMargin : real

此属性保存与启动鼠标拖动的路径的最大距离。

默认情况下,只能通过单击项目来拖动路径。如果dragMargin 大于零,则可以通过在路径的dragMargin 像素内单击来启动拖动。

3、dragging : bool

当前是否正在由于用户拖动视图而移动。  

4、flickDeceleration : real

轻弹减速的速率。默认值为 100。

5、flicking : bool

当前是否正在由于用户轻弹视图而移动。

6、interactive : bool

用户不能拖动或轻弹非交互式的 PathView。

此属性对于暂时禁用轻弹很有用。这允许与 PathView 的子项进行特殊交互。

7、maximumFlickVelocity : real

此属性保存用户可以以像素/秒为单位轻弹视图的近似最大速度。默认值取决于平台。

8、movementDirection : enumeration

此属性确定设置当前索引时项目移动的方向。

  • PathView.Shortest:默认值,项目向需要最少移动的方向移动,可以是负的或正的。
  • PathView.Negative:项目向后移动到目的地。
  • PathView.Positive:项目朝着目的地前进。

此属性不会影响 incrementCurrentIndex() 和 decrementCurrentIndex() 的移动。

9、moving : bool

此属性保存视图当前是否由于用户拖动或轻弹视图而移动。

10、offset : real

指定项目沿路径距离其初始位置的距离。范围从 0 到模型中的项目数。

11、path : Path

 用于布置项目的路径。

12、pathItemCount : int

此属性保存路径上可见的项目数。将此值设置为 undefined 将显示路径上的所有项目。

三、属性成员

1、PathView.isCurrentItem : bool

此委托是否当前项目。它附加到委托的每个实例。此属性可用于调整当前项目的外观。

    Component 
    {
        id: delegate
        Column 
        {
            id: wrapper
            opacity: PathView.isCurrentItem ? 1 : 0.5
            Image 
            {
                anchors.horizontalCenter: nameText.horizontalCenter
                width: 64; height: 64
                source: icon
            }
            Text 
            {
                id: nameText
                text: name
                font.pointSize: 16
            }
        }
    }

2、PathView.onPath : bool

项目当前是否在路径上。附加到委托的每个实例。

如果设置了 pathItemCount,则可能会有某些实例化项目当前不位于该路径上。

四、信号成员

1、dragEnded()

     dragStarted()

开始 / 停止拖动发出的信号。

2、flickEnded()

     flickStarted()

开始 / 停止轻弹发出的信号。

3、movementStarted()

当视图由于用户交互而开始移动时会发出此信号。 

4、movementEnded()

当视图由于用户交互而停止移动时发出此信号。

  • 如果产生了轻弹,则一旦轻弹停止,就会发出该信号。
  • 如果未生成轻弹,则当用户停止拖动时(鼠标或触摸释放)会发出此信号。

其他属性、信号、函数见:ListView

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值