如何垂直制作ScrollView剪辑?

时间:2017-01-04 18:55:50

标签: qt qml scrollview clipping qt5.5

ScrollView将其所有内容剪辑为其大小。它是否可以使它只适用于顶部和底部,但允许孩子走出右侧和左侧的父母框架?

2 个答案:

答案 0 :(得分:0)

我只能想象一个原因,为什么你不将ScrollView的宽度设置为更高的值(contentItem的宽度)。< / p>

为了能够这样做,虽然不限制ScrollView的宽度,你可以使用一个简单的技巧:

Item {
    id: limitedWidthItemToAnchorTo
    width: 200 // the width the ScrollView was supposed to have
    height: 400

    ScrollView {
        width: contentItem.width + __verticalScrollBar.width// Don't limit the width.
        height: 400 // Limit only the height.
        horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff // You don't need them.
        contentItem: Rectangle {
            width: 700 // This will set the ScrollViews width.
            height: 600 // The height will be clipped by the ScrollView. 
                        // You can scroll though.

            gradient: Gradient {
                GradientStop { position: 0; color: 'red' }
                GradientStop { position: 1; color: 'blue' }
            }
            border.width: 10
        }
    }
}

你将它包裹在Item中,锚定到此,你就会变得更好。 或者你也可以使用面具,但这会更复杂。

本身不能仅剪辑水平或垂直,因为剪辑是使用Item的边界框完成的。

答案 1 :(得分:0)

如果你想要的只是向一个方向滚动,那么只需使用属性绑定将内容项的宽度/高度设置为ScrollView的宽度/高度(因为ScrollView中的项目被重新设置为ScrollView.contentItem) 。以下示例仅垂直滚动。如果您需要确认它确实有效,我已对其进行了测试。

Item {
    ScrollView {
        id: scrollview1
        anchors.fill: parent
        anchors.margins: 20
        clip: true

        ColumnLayout {
            width: scrollview1.width
        }
    }
}