Я хочу создать в QML телевизионный расписание, где вертикальная ось представляет собой список каналов, а горизонтальная ось основана на времени. Например, что-то вродеДвумерный стол с вложенными прокручиваемыми областями в QML
http://zappware.com/wbdsgn/wp-content/uploads/2014/08/Zuku_v03_EPG_01_Caslte.jpg
Изначально я создал
- вертикальный ListView с
- моделью = списком каналов
- делегата = горизонтальной ListView
- каждый горизонтальный ListView имеет
- модели = список событий
- делегата = вашу деталь, где ширина пропорциональна длительности события
До сих пор так хорошо. Единственным недостатком является то, что горизонтальные списки ListViews прокручиваются один за другим, пока они должны прокручиваться вместе.
Таким образом, свойство contentX каждого горизонтального ListView должно быть привязано к свойству contentX перемещающегося/перемещающегося горизонтального ListView. Обратите внимание, что это привязка динамическое: при щелчке в первой строке все остальные строки должны связываться с содержимым X первой строки. Но это должно быть изменено при щелчке во второй строке.
Любые советы о том, как это можно сделать?
Я попробовал несколько иной подход
- создавая Flickable позицию в верхней части вертикальной ListView (с contentWidth полное время-окна).
- связывания каждый горизонтальный ListView к contentX этого Flickable (это статическое связывание)
Это привело к хорошей синхронной прокрутки, но я до сих пор есть некоторые проблемы
- я должен был сделать некоторые трюки чтобы щелкнуть только горизонтально или вертикально, но не оба:
- Я не могу больше нажимать на отдельные события; Я предполагаю, что события перехватываются Flickable
- Я также не уверен в влиянии памяти такого Проникающего с огромным контентом contentWidth?
Отзыв оценен!
Спасибо! Много! Два вопроса: 1) в вашем примере прокрутка по вертикали работает только в столбце канала, а не в области программ, в то время как вы, похоже, указываете иначе («Таким образом, вы можете прокручивать по вертикали от обоих и только прокручивать по горизонтали программы».) , 2) любая идея о том, что использование памяти имеет практически пустое значение, с большим содержаниемWidth/HeightN –
1 - Я написал пример, как через 20 минут после написания текста перед ним. В то время я решил, что было бы более «здорово» иметь вертикальную прокрутку в каналах. Вы можете сделать двустороннюю привязку, удалить существующие и использовать 'onContentYChanged' обоих представлений для синхронизации другого. 2 - это не занимает никакой памяти, это «воображаемая область», просто логика, это не похоже на растровое изображение с каждым заполненным пикселем. – dtech
Понял! Спасибо, что помогли мне. –