【发布时间】:2015-04-17 13:40:54
【问题描述】:
我想在 QML 中创建一个电视节目表,其中纵轴是频道列表,横轴是基于时间的。例如像
(来源:zappware.com)
最初,我创建了
- 一个垂直的 ListView
- model = 频道列表
- delegate = 水平 ListView
- 每个水平的 ListView 都有
- model = 事件列表
- delegate = 宽度与事件持续时间成正比的项目
到目前为止一切顺利。唯一的缺点是水平的 ListView 一个一个滚动,而它们应该一起滚动。
因此,不知何故,每个水平 ListView 的 contentX 属性都应该绑定到移动/滑动的水平 ListView 的 contentX 属性。请注意,此绑定是动态的:在第一行中滑动时,所有其他行都应绑定到第一行的 contentX。但是在第二行中滑动时应该更改。
关于如何做到这一点的任何建议?
我尝试了一种不同的方法
- 在垂直 ListView 的顶部创建一个 Flickable Item(contentWidth 是完整的时间窗口)。
- 将每个水平 ListView 绑定到此 Flickable 的 contentX(这是一个静态绑定)
这导致了很好的同步滚动,但我仍然有一些问题
- 我不得不做一些技巧来确保轻弹只能是水平或垂直的,而不是两者兼而有之
- 我无法再点击个别事件;我猜事件被 Flickable 拦截了
- 我也不确定这种具有巨大 contentWidth 的 Flickable 对内存的影响?
感谢您的反馈!
【问题讨论】: