代码之家  ›  专栏  ›  技术社区  ›  Ashkan Nourzadeh

如何使矩形高度填充ScrollView

  •  2
  • Ashkan Nourzadeh  · 技术社区  · 9 年前

    我有以下QML代码:

    import QtQuick 2.4
    import QtQuick.Controls 1.3
    import QtQuick.Window 2.2
    
    Window {
        id: win
        width: 1024
        height: 768
        visible: true
    
        ScrollView {
            id:scrollView
            anchors.fill: parent
            Rectangle{
                id:rect
                z:5
                color:"red"
                width: 2048
                height: win.height
                border{
                    color: "black"
                    width: 2
                }
            }
        }
    }
    

    在此代码中,较大的 Rectangle 使水平滚动条正确显示。但是,由于滚动条距离窗口有一定的高度,因此垂直滚动条也会出现。

    我怎样才能 长方形 仅填充我的 ScrollView 这样垂直滚动条就不会出现了?使用类似的方法 win.height - <someNumber> 不可接受 .添加 verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff 也是 不可接受 因为它在底部隐藏了一些内容 rect .

    1 回复  |  直到 9 年前
        1
  •  2
  •   Community CDub    8 年前

    一般来说 ScrollView 不适用于此类用途。它更像是一个容器,用来布置项目并通过提供的滚动条显示它们。如果绑定设置不正确,绑定循环可能会在这里和那里弹出。而且 Flickable +自定义滚动条(例如可用的滚动条 here )可以完美满足您的需求。

    也就是说, viewport 属性为该问题提供了所需的(跨平台)解决方法。文件说明:

    视口确定contentItem上的当前“窗口”。换言之,它将其剪辑并 视口的大小告诉您有多少内容区域是可见的 .

    因此 height 孩子的 Item 可以根据 身高 视口 。最后一个简单的例子是 Image (可爱的小猫来了)看起来像这样:

    import QtQuick 2.4
    import QtQuick.Controls 1.3
    import QtQuick.Window 2.2
    
    Window {
        id: win
        width: 300
        height: 300
        visible: true
    
        ScrollView {
            id:scrollView
            anchors.fill: parent
    
            Image{
                height: scrollView.viewport.height
                source: "http://c1.staticflickr.com/9/8582/16489458700_c9d82954b7_z.jpg"
            }
        }
    }
    

    enter image description here