QScrollArea - как включить сенсорные взаимодействия для перехода к следующему элементу? - PullRequest
4 голосов
/ 28 января 2011

Я использую Nokia Qt SDK и спроектировал небольшую баннерную карусель в верхней части. Это выглядит так:

UI demo

Иерархия выглядит так:

UI hierarchy

После установки этого в эмуляторе я пытаюсь сделать его прокручиваемым (швырять). Я думаю, это простая задача (например, ScrollView в Android или UIScrollView в iOS), но пока что нет никакой радости. Все ссылки в интернете указывают на реализацию пользовательских прокруток и т. Д. И т. Д., Которые я не хочу и не собираюсь делать, поскольку Qt должен быть фреймворком более высокого уровня? Каково состояние искусства здесь? ; -)

Вопрос вкратце: как я могу заставить QScrollArea реагировать на события касания (пролистывание, прокрутка, перетаскивание и т. Д.) И отображать другие виджеты в очереди? Я не ожидаю, что он сможет "привязаться" к дочернему виджету (это еще одно требование позже;)).

Ответы [ 2 ]

3 голосов
/ 02 февраля 2011

Взгляните на Flickable (на http://blog.qt.io/blog/2009/07/19/kinetic-scrolling-on-any-widgets/) и FlickCharm (связанный с этим первым адресом), чтобы получить представление о том, как реализовать его самостоятельно или использовать как есть.

Обратите внимание, что это может быть необязательно, если вашей целью является Maemo, так как его порт Qt обрабатывает его.

0 голосов
/ 28 января 2011

Вы пробовали включить жесты? Я еще не использовал поддержку жестов, но похоже, что это так же просто, как

scrollEvents->grabGesture(Qt::SwipeGesture);
// or...
scrollEvents->grabGesture(Qt::PanGesture);

Я не знаю, обрабатывает ли QScrollArea жесты, поэтому если это не сработает, вам может потребоваться создать подкласс QScrollArea и переопределить метод event для обработки событий жестов, как описано в жестах Руководство по программированию .

...