Как использовать прокрутку на горизонтальной прокрутке QML - PullRequest
0 голосов
/ 09 февраля 2019

Я хотел бы использовать прокрутку мыши, чтобы прокрутить горизонтальный вид прокрутки.Как это сделать, вот код для моего примера прокрутки.

        ScrollView {
        id:scrollview

        ListView {
            anchors.fill: parent
            model: 30
            orientation: ListView.Horizontal
            delegate: Component{

                Item{
                    height: scrollview.height
                    width: scrollview.height

                    Rectangle{
                        anchors.fill: parent
                        color:"lightgrey"
                        Text{
                            anchors.centerIn: parent
                            text: index
                        }
                    }

                }
            }
        }
    }

Я хотел бы добиться прокрутки, как в вертикальном представлении, но вместо этого только в горизонтальной ориентации

1 Ответ

0 голосов
/ 10 февраля 2019

Я получил его для работы с MouseArea поверх ScrollView, который прослушивает события колеса мыши, но проходит через другие события.

ScrollView {
    id:scrollview

    property int scrollSpeed: 30

    ListView {

        anchors.fill: parent
        model: 30
        orientation: ListView.Horizontal
        delegate: Component {

            Item {
                height: scrollview.height
                width: scrollview.height

                Rectangle {
                    anchors.fill: parent
                    color:"lightgrey"
                    Text {
                        anchors.centerIn: parent
                        text: index
                    }
                }

            }
        }
    }

}

MouseArea {
    anchors.fill: scrollview

    onWheel: {
        if (wheel.angleDelta.y > 0) {
            scrollview.flickableItem.contentX -= scrollview.scrollSpeed;
            if (scrollview.flickableItem.contentX < 0) {
                scrollview.flickableItem.contentX = 0;
            }
        } else {
            scrollview.flickableItem.contentX += scrollview.scrollSpeed;
            if (scrollview.flickableItem.contentX + scrollview.flickableItem.width > scrollview.flickableItem.contentWidth) {
                scrollview.flickableItem.contentX = scrollview.flickableItem.contentWidth -  scrollview.flickableItem.width;
            }
        }
    }
    onClicked: mouse.accepted = false;
    onPressed: mouse.accepted = false;
    onReleased: mouse.accepted = false;
    onDoubleClicked: mouse.accepted = false;
    onPositionChanged: mouse.accepted = false;
    onPressAndHold: mouse.accepted = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...