У меня есть ListView, который содержит список прямоугольников с текстом. Иногда текст в прямоугольниках слишком длинный для размещения, поэтому я бы хотел, чтобы текст прокручивался горизонтально. Я использую ScrollView, окружающий текст, чтобы сделать его горизонтально прокручиваемым.
Проблема в том, что я не могу прокрутить список (по вертикали), потому что прокрутка перехватывается горизонтальными ScrollViews.
Вот как выглядит мой qml:
ListView { //vertically scrolling list
model: modelName
anchors.fill: parent
id: vListView
delegate: Column {
width: parent.width
spacing: 3
bottomPadding: 2
Rectangle { // rectangles containing the text
width: parent.width
height: 40
radius: 5
id: buttonName
ScrollView {//horizontally scrolling list
contentHeight: -1
anchors.fill: parent
anchors.leftMargin: 18
id: hScrollView
Text {// text that is sometimes too long
width: parent.width
rightPadding: 15
bottomPadding: 5
text: model.data
topPadding: 9
horizontalAlignment: Text.AlignLeft
anchors.centerIn: parent
}
}
}
}
}
Как сделать так, чтобы список прокручивался по вертикали и чтобы отдельные текстовые поля также прокручивались по горизонтали?
edit:
Я попытался использовать следующий код, чтобы «поймать» вход колеса прокрутки и прокрутить соответствующие элементы. Но я не работал(код находится в области мыши, которая заполняет все это)
onWheel: {
if (wheel.angleDelta.y > 0) {
vListView.flickableItem.contentX -= vListView.scrollSpeed;
if (vListView.flickableItem.contentX < 0) {
vListView.flickableItem.contentX = 0;
}
} else {
hScrollView.flickableItem.contentX += hScrollView.scrollSpeed;
if (individualCommandScrollView.flickableItem.contentX + hScrollView.flickableItem.width > hScrollView.flickableItem.contentWidth) {
hScrollView.flickableItem.contentX = hScrollView.flickableItem.contentWidth - hScrollView.flickableItem.width;
}
}
}
onClicked: mouse.accepted = false;
onPressed: mouse.accepted =
onReleased: mouse.accepted = false;
onDoubleClicked: mouse.accepted = false;
onPositionChanged: mouse.accepted = false;
onPressAndHold: mouse.accepted = false;