问题
I want to display a big list on a small display. The problem with the ListView is, that I have to setup a orientation, whether it is flickable horizontal or vertical.
What I tried is:
- I inserted the ListView in a Flickable, and setup the Flickable for horizontal scroll and the view for vertical scroll, but then I can't flick to both sides at the same time
- I tried to set the flickableDirection property of the ListView to Flickable.HorizontalAndVerticalFlick, but this didn't work.
Heres a simple example:
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
}
}
}
}
}
回答1:
I think the solution you are searching for is Repeater.
The Repeater type is used to create a large number of similar items. Like other view types, a Repeater has a model and a delegate: for each entry in the model, the delegate is instantiated in a context seeded with data from the model. A Repeater item is usually enclosed in a positioner type such as Row or Column to visually position the multiple delegate items created by the Repeater.
The resulting Row
(Column
resp.) can be enclosed in a Flickable
which provides the actual flicking ability.
来源:https://stackoverflow.com/questions/26669856/howto-flick-a-qml-listview-horizontal-and-vertical