Пытаюсь разобраться с Qt под Android. На форме размещен QListWidget, при этом привычная сенсорная прокрутка свайпом не работает.
Собсвтенно как реализовать прокрутку свайпом?
Файл проекта .pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = AndroidMainWindow
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
CONFIG += mobility
MOBILITY =
В .cpp только заполнение QListWidget больше никаких изменений
for( short i = 0; i < 50; i++ )
{
QListWidgetItem * item = new QListWidgetItem();
item->setSizeHint( QSize(0, 70) );
item->setText( "Элемент списка номер " + QString::number(i) );
ui->listWidget->addItem( item );
}
Ответ
Вначале обработку сенсора надо включить с помощью функции QWidget::grabGesture
QListWidget * my_list = ...
my_list->grabGesture(Qt::SwipeGesture);
Второй вариант, использовать класс QScroller
QScroller::grabGesture(my_list, QScroller::LeftMouseButtonGesture);
Если QScroller не устраивает можно обрабатывать события от сенсора QGestureEvent самостоятельно (пример с doc.qt.io):
bool MyWidget::event(QEvent *event)
{
if (event->type() == QEvent::Gesture)
return gestureEvent(static_cast
bool MyWidget::gestureEvent(QGestureEvent *event)
{
if (QGesture *swipe = event->gesture(Qt::SwipeGesture))
swipeTriggered(static_cast
return true;
}
Более подробно обо всей кухне
Комментариев нет:
Отправить комментарий