Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Problems with ListView Scroll



  • Hi all,

    I'm having some problems with ListView. I followed some exemples on the net but I can't scroll my list up and down. It's a basic list of buttons, but the height is more than the screen available, so I need to scroll down the item.

    The code is the followiing:
    list.qml

    import QtQuick 2.11
    import QtQuick.Controls 2.1
    import QtQuick.Layouts 1.3
    
    Rectangle{
        color: "red"
    
           Column {
               id: column
               anchors.fill: parent
                ListView{
                    id: list
                    anchors.top: column
                    height: 3000
                    //clip: true
                    flickableDirection: Flickable.VerticalFlick
                    boundsBehavior: Flickable.StopAtBounds
                    interactive: true
                    Button{
                        id: button1
                        anchors.top: column
                        height: 300
                        text: "Clicca Button 1"
                    }
                    Button{
                        id: button2
                        anchors.top: button1.bottom
                        height: 300
                        text: "Clicca Button 2"
                    }
                    Button{
                        id: button3
                        anchors.top: button2.bottom
                        height: 300
                        text: "Clicca Button 3"
                    }
                    Button{
                        id: button4
                        anchors.top: button3.bottom
                        height: 300
                        text: "Clicca Button 4"
                    }
                    Button{
                        id: button5
                        anchors.top: button4.bottom
                        height: 300
                        text: "Clicca Button 5"
                    }
                    Button{
                        id: button6
                        anchors.top: button5.bottom
                        height: 300
                        text: "Clicca Button 6"
                    }
                    Button{
                        id: button7
                        anchors.top: button6.bottom
                        height: 300
                        text: "Clicca Button 7"
                    }
                    Layout.fillWidth: true
                    Layout.fillHeight: true
    
                    ScrollBar.vertical: ScrollBar {}
                }
           }
    }
    
    
    

    I'm using a QWisget based application so I charge the qml in this way, just to be clear:

        QQuickView *rotella = new QQuickView();
        rotella->setResizeMode(QQuickView::SizeRootObjectToView);
        QWidget *container = QWidget::createWindowContainer(rotella, ui->page_3);
        container->setFocusPolicy(Qt::TabFocus);
        rotella->setSource(QUrl("qrc:/List.qml"));
        container->setGeometry(0,0, width, height);
        rotella->showMaximized();
    

    The resul is this one:
    0_1549619091721_Cattura66.PNG

    What I'm trying to do is to scroll so that I can see also the other buttons.

    Can anyone please help me?
    Thanks in advance!


  • Moderators

    hi @davidesalvetti

    your buttons are not part of the listview, they way you wrote it, they are children of the listview but not the model -> Flickable will not effect them.

    I suggest the following:

    Rectangle{
           color: "red"
    
            ListView{
                id: list
                anchors.fill: parent
    
                flickableDirection: Flickable.VerticalFlick
                boundsBehavior: Flickable.StopAtBounds
                interactive: true
               
                model: 7
    
                delegate:
                    Button{
                        width:  list.width/2
                        height: 300
                        text: "Clicca Button " + (index +1)
                    }
            }
        }
    


  • Thank you, that was the problem. It works now! thanks again.


Log in to reply