#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; } Более подробно обо всей кухне
Комментариев нет:
Отправить комментарий