(qt)如何在qml中使滚动条高度恒定

时间:2017-11-15 14:55:07

标签: qt qml

无论listview中的元素数量多少,我都试图使滚动条保持恒定。但我没有找到任何财产来做这件事。请建议如何做到这一点。提前谢谢。

代码段:

Listview {
    id:mylistview
    height :400
    Width:500
    ScrollBar.vertical: scbr
    model :mymodel
    delegate:del{} 
} 

ScrollBar
{ 
    id: scbr 
    active: true
    interactive : true 
    hoverEnabled: true
    orientation :Qt.vertical 
    snapMode : ScrollBar.NoSnap
    contentItem: 
        Rectangle {  
        implicitWidth: 60                           
        implicitHeight: 100
        color: "#ff0000" 
    }
}

这里甚至我们设置implicitWidth是60.但是当模型具有非常大的数据时,滚动条图像将其高度更改为非常小。

1 个答案:

答案 0 :(得分:0)

我创建了一个滚动条,它更像是一个滚动指示器,因为它无法控制视图。它的位置可以指示您的观看当前位置相对于完整内容。

让我们考虑一个代表高度为“h”的列表。您可以创建一个具有所需高度和宽度的矩形(例如,高度为100,宽度为60,如示例所示)。

x坐标 - >列表宽度 - 滚动指示符的宽度(本例中为60)

y坐标将是相对属性 (list.contentY *(list.height-indicator.height))/(list.height - delegate.height)

示例如下:

Rectangle {
             id: indicator
             x: 0
             y: ((list.contentY) * (list.height - indicator.height)) / (list.height - delegate.height)
             width: 10
             height: 150
             color: "blue"
             radius: 10
         }

其中list是列表的id,delegate是视图中的delegate的id。

我不确定它是否适合您的确切目的但我必须以这种方式继续前进,以达到保持固定大小滚动条的类似要求。