Как щелкнуть QML ListView по горизонтали и вертикали
Я хочу отобразить большой список на маленьком дисплее. Проблема с ListView заключается в том, что мне нужно настроить ориентацию, независимо от того, горизонтальная она или вертикальная.
То, что я пытался это:
- Я вставил ListView в Flickable, и настроил Flickable для горизонтальной прокрутки и представление для вертикальной прокрутки, но затем я не могу пролистать в обе стороны одновременно
- Я попытался установить для свойства flickableDirection ListView значение Flickable.HorizontAndVerticalFlick, но это не сработало.
Вот простой пример:
import QtQuick 2.2
import QtQuick.Window 2.1
Window {
visible: true
width: 360
height: 360
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
ListView {
anchors.fill: parent
model: fruitModel
delegate: Rectangle {
id: delegateRect
height: 150
width: 545
border.color: "steelblue"
border.width: 1
Row {
Text {
id: nameLabel
width: 345
text: name
}
Text {
id: costLabel
width: 200
text: cost
}
}
}
}
}
2 ответа
Я думаю, что решение, которое вы ищете Repeater
,
Тип Repeater используется для создания большого количества похожих предметов. Как и другие типы представлений, Repeater имеет модель и делегата: для каждой записи в модели экземпляр делегата создается в контексте, заполненном данными из модели. Элемент повторителя обычно заключен в тип позиционера, например строку или столбец, для визуального позиционирования нескольких элементов делегата, созданных повторителем.
Результирующий Row
(Column
соответственно) может быть заключен в Flickable
который обеспечивает фактическую способность стряхивать.
Я нашел его в Qt Doc: https://doc.qt.io/qt-5/qml-qtquick-listview.html У меня работает :)