用过QML进行列表显示的同仁肯定都知道,QML中的ListView是默认没有ScrollBar的,超出部分的列表项只能通过滚动鼠标滚轮进行显示,但是我们又知道QML中的ScrollView是有ScrollBar的,因此,我们可以通过在ScrollView中嵌入ListView并且重写ScrollView的style来实现列表的显示以及ScrollBar的显示(重写ScrollViewStyle费时费力且效果不佳,请看后面的挫图),这样也同样能够完成鼠标拖动ScrollBar滚动列表,其实现代码大致如下:
其显示效果如下图:
ScrollView{
id:scroll_bar
style:style:ScrollViewStyle{
//...
}
ListView {
id: list_view
anchors.fill: parent
clip: true
orientation: ListView.Vertical
snapMode: ListView.NoSnap
model: root.model
delegate: Rectangle {
//...
}
}
}
但是,这样做的一个缺陷是ScrollView的ScrollBar是自带原生的,不能进行自定义显示的,比如想改变ScrollBar的宽度、高度、颜色等,在这种情况下是不能实现的。
其显示效果如下图: