如何在不使用QML中的滚动条的情况下滚动GridView视图

时间:2018-11-13 08:59:25

标签: qt qml

我有一个GridView,其中包含'n'个项目。我想在不使用滚动条的情况下滚动网格视图

  GridView{    
         id:product_grid     
        //width:1265     //height:621    
         boundsBehavior: Flickable.StopAtBounds     
        flow:GridView.LeftToRight     
        snapMode: GridView.SnapOneRow     
        displaced: Transition{         
                   NumberAnimation{properties: "y,x"; easing.type: Easing.OutQuad }    
     }

1 个答案:

答案 0 :(得分:0)

经过研究和摆弄后,我将其简化为两个步骤。

(1)在您的其他导入命令中,在文件顶部添加import QtQuick.Controls 2.4

(2)将ScrollBar.vertical: ScrollBar { visible: false }添加到您的GridView对象中。

基本上,您正在使用[您的]自定义滚动条重载滚动条,并使它不可见。

这里是一个例子:

import QtQuick 2.0
import QtQuick.Controls 2.4  // important

// ...

GridView {
    /* Your code
    id: product_grid
    boundsBehavior: Flickable.StopAtBounds     
    flow: GridView.LeftToRight     
    snapMode: GridView.SnapOneRow     
    displaced: Transition {         
        NumberAnimation { properties: "y,x"; easing.type: Easing.OutQuad }
    }
    */

    // magic (overloads vertical scrollbar, allowing for customisable scrollbars)
    ScrollBar.vertical: ScrollBar {
        visible: false    // hides scrollbar
    }

    model: ListModel {
        ListElement { letter: 'a' }
        ListElement { letter: 'b' }
        ListElement { letter: 'c' }
        ListElement { letter: 'd' }
        ListElement { letter: 'e' }
        ListElement { letter: 'f' }
        ListElement { letter: 'g' }
        ListElement { letter: 'h' }
        ListElement { letter: 'i' }
        ListElement { letter: 'j' }
    }

    anchors.centerIn: parent
    width: 300
    height: 200

    delegate: Column {
        Text {
            color: "white"
            text: letter
            anchors.horizontalCenter: parent.horizontalCenter
        }
    }

}

了解更多: