如何通过分别单击向右和向左箭头将页面更改为SwipeView的下一个或上一个项目?

时间:2017-04-28 12:41:38

标签: qt qml

我有一个SwipeView,它通过Repeater和Loader加载其内部元素。

enter image description here

我只想点击SwipeView右侧和左侧的箭头,即可向前和向后滑动项目。 如何在QML中实现此行为?

SwipeView {
            id: __swipeView
            Layout.fillHeight: true
            Layout.fillWidth: true
            Repeater {
                model: 3
                Loader {
                    source: "qrc:/../SwipeDelegate.qml"
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

在您的委托中,您可以通过SwipeView attached property访问SwipeView,然后根据需要增加或减少当前索引:

import QtQuick 2.6
import QtQuick.Controls 2.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    SwipeView {
        anchors.fill: parent

        Repeater {
            model: 3

            Item {
                id: delegate

                Button {
                    text: "<"
                    enabled: index > 0
                    onClicked: delegate.SwipeView.view.decrementCurrentIndex()
                    anchors.left: parent.left
                    anchors.verticalCenter: parent.verticalCenter
                }

                Label {
                    text: "Page " + (index + 1)
                    anchors.centerIn: parent
                }

                Button {
                    text: ">"
                    enabled: index < delegate.SwipeView.view.count - 1
                    onClicked: delegate.SwipeView.view.incrementCurrentIndex()
                    anchors.right: parent.right
                    anchors.verticalCenter: parent.verticalCenter
                }
            }
        }
    }
}

使用这些功能非常重要,而不是直接设置currentIndex,原因如here所述。