我希望有一个单一(垂直)ListView,并使用(水平)ListView委托。水平委托应该同步滚动。为此,我在ListViews上方放置了一个Flickable,并将水平ListView的contentX绑定到Flickable的contentX(并且垂直ListView的contentY也是如此)(注意:这里描述了不同的方法来同步ListView滚动,但这似乎在移动设备上存在性能问题)
下面的代码基本上可以工作,但仍然存在以下问题:
感谢任何帮助!
下面的代码基本上可以工作,但仍然存在以下问题:
- 我无法在矩形中获得onClicked事件(当我删除顶部的Flickable时可以获得)
- 我想要水平或垂直滑动,但不能同时进行。我可以通过设置flickableDirection:Flickable.HorizontalFlick来限制顶部Flickable的滑动,但那么我就不能再垂直滑动了(我希望Flickable会将未使用的鼠标事件传递给垂直ListView,但这似乎不会发生)
感谢任何帮助!
import QtQuick 2.0
Item {
id: main
visible: true
width: 600
height: 600
ListView {
id: verticalList
width: parent.width;
height: parent.height;
contentY : flickable.contentY
anchors.fill: parent
spacing: 10
orientation: ListView.Vertical
model: 100
delegate:
ListView {
id: horizontalList
width: parent.width;
height: 100;
contentX : flickable.contentX
spacing: 10
orientation: ListView.Horizontal
model: 20
property var verticalIndex : index
delegate:
Rectangle
{
property var colors : ['red', 'green', 'blue']
property var widths : [100, 200, 300]
height: 100
width: widths[(verticalIndex + model.index) % widths.length]
color: colors[model.index % colors.length]
MouseArea {
anchors.fill: parent
onClicked: {
console.log("Rectangle.onClicked")
}
}
}
}
}
//on top a Flickable
Flickable {
id: flickable
height: parent.height
width: parent.width
contentHeight: 100*100 //nrOfRows * rowHeight
contentWidth: 20*300 //nrOfEvent * max/averageEventWidth
}
}