#android #cpp #qt #widgets
Пытаюсь разобраться с 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 ); }
Ответы
Ответ 1
Вначале обработку сенсора надо включить с помощью функции 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(event)); return QWidget::event(event); } bool MyWidget::gestureEvent(QGestureEvent *event) { if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) swipeTriggered(static_cast (swipe)); else if (QGesture *pan = event->gesture(Qt::PanGesture)) panTriggered(static_cast (pan)); if (QGesture *pinch = event->gesture(Qt::PinchGesture)) pinchTriggered(static_cast (pinch)); return true; } Более подробно обо всей кухне
Комментариев нет:
Отправить комментарий