2011-01-28 2 views
4

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

UI demo

Иерархия выглядит следующим образом:

UI hierarchy

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

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

+0

Я нашел QFingerScrollArea сейчас: http://www.youtube.com/watch?v=OPQ1VlyMPYU –

+0

QScrollArea поддерживает сенсорные взаимодействия напрямую (по крайней мере, в новых qts). Хотя я не понял, в каких случаях (в моем проекте есть два элемента управления, основанных на QAbstractScrollArea. Один контролирует свитки при касании, а другой нет). Было бы хорошо, если ответ будет обновлен. – BeniBela

ответ

3

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

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

+0

http://labs.qt.nokia.com/2009/07/19/kinetic-scrolling-on-any-widgets/ dead link – sancelot

+0

Я думаю, что это новая ссылка: http://blog.qt.io/ blog/2009/07/19/kinetic-scrolling-on-any-widgets/ – frozenkoi

+0

@frozenkoi Почему бы не изменить вопрос, чтобы добавить правильную ссылку? – Fritz

0

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

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

Я не знаю, если QScrollArea уже обрабатывает жесты, так что если это не сработает, то, возможно, потребуется суб- класса QScrollArea и переопределить метод event для обработки событий жестов, как описано в Gestures Programming Guide.

+0

Это для Qt 4.7? Я должен использовать Qt 4.6 из-за загрузки Nokia Qt SDK, правильно? По крайней мере, нет возможности скачать 4.7. (Установщик SDK сломан, предложения по загрузке веб-сайта приведены в комплекте 4.6). –

+0

ОК, я вижу, он также доступен в документации 4.6, даст ему попробовать, thx! –

+0

Yup, попробовал - и без радости. Вся история кажется сложной. Поскольку некоторые люди внедряли пользовательские Touch/Fling и т. Д., Я очень шокирован. Хотел найти еще несколько готовых решений. –

Смежные вопросы