QML SwipeView 覆盖整个 window

QML SwipeView is covering entire window

如果我使用滑动视图,我会遇到一些问题,我已经编写了以下代码:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Swipe View")

    MainForm {
        anchors.fill:parent

        Rectangle{
            id:rightRect
            anchors.right:parent.right
            width: parent.width*0.50
            height:parent.height
            color:"yellow"
        }

        Rectangle{
            id:leftRect
            width:parent.width*0.50
            height:parent.height
            color:"lightgreen"
            border.color:"red"
            anchors.right:rightRect.left
            SwipeView{
                id:swipeView
                anchors.fill : leftRect
                //Layout.fillWidth: true
                currentIndex: 0
                interactive: false
                Page{
                    id:page1

                    Rectangle{
                        width:parent.width
                        height:parent.height
                        color:"lightgreen"
                        Button{
                            text:"move to 2"
                            onClicked: swipeView.currentIndex = 1
                        }
                    }
                }

                Page{
                    id:page2
                    Rectangle{
                        width:parent.width
                        height:parent.height
                        color:"lightblue"
                        Button{
                            text:"move to 1"
                            onClicked: swipeView.currentIndex = 0
                        }
                    }
                }
            }
        }
    }
}

以下是屏幕截图:

1) 最初我将当前索引设置为 "0" 但索引“1”蓝色区域可见并且覆盖了右侧区域(黄色矩形):

2) 如果我点击 移至 2 按钮,那么黄色矩形就会按预期显示。

现在,即使我点击 移至 1 个按钮,我也需要相同的行为,即黄色矩形应该在所有 time.How 中可见才能实现此目的?

clip:true 添加到您的 SwipeView 的父级,它会很好。

Rectangle{
            id:leftRect
            width:parent.width*0.50
            height:parent.height
            color:"lightgreen"
            border.color:"red"
            anchors.right:rightRect.left
            clip:true    //add this
            SwipeView{

根据Qt Documentation

If clipping is enabled, an item will clip its own painting, as well as the painting of its children, to its bounding rectangle.

默认情况下,此值为 false,因此您的 SwipeView 超出了矩形区域。