如何在水平和垂直方向上轻弹QML ListView

时间:2014-10-31 07:58:11

标签: qt listview qml flickable

我想在小显示屏上显示一个大清单。 ListView的问题是,我必须设置一个方向,无论它是水平还是垂直可滑动。

我尝试的是:

  1. 我在一个Flickable中插入了ListView,并为水平滚动设置了Flickable和垂直滚动的视图,但是我不能同时向两边轻弹
  2. 我尝试将ListView的flickableDirection属性设置为Flickable.Horizo​​ntalAndVerticalFlick,但这不起作用。
  3. 这是一个简单的例子:

    import QtQuick 2.2
    import QtQuick.Window 2.1
    
    Window {
        visible: true
        width: 360
        height: 360
    
        ListModel {
            id: fruitModel
    
            ListElement {
                name: "Apple"
                cost: 2.45
            }
            ListElement {
                name: "Orange"
                cost: 3.25
            }
            ListElement {
                name: "Banana"
                cost: 1.95
            }
        }
    
        ListView {
            anchors.fill: parent
    
            model: fruitModel
    
            delegate: Rectangle {
                id: delegateRect
                height: 150
                width: 545
    
                border.color: "steelblue"
                border.width: 1
    
                Row {
                    Text {
                        id: nameLabel
                        width: 345
                        text: name
                    }
    
                    Text {
                        id: costLabel
                        width: 200
                        text: cost
                    }
                }
            }
        }
    }
    

1 个答案:

答案 0 :(得分:1)

我认为您要搜索的解决方案是Repeater

  

Repeater类型用于创建大量类似的项目。与其他视图类型一样,Repeater有一个模型和一个委托:对于模型中的每个条目,委托在一个上传了模型数据的上下文中实例化。 Repeater项通常包含在定位器类型(如行或列)中,以可视方式定位由Repeater创建的多个委托项。

结果RowColumn resp。)可以包含在Flickable中,提供实际的轻弹功能。