При написании простого приложения для Android на Qt я столкнулся с неудобной дилеммой:
У меня есть подкласс QWidget под названием PlotView, и я переопределил функцию события из него:
bool PlotView::event(QEvent *event){
if(event->type() == QEvent::Gesture){
emit gestureEvent(static_cast<QGestureEvent*>(event));
return true;
}
return QWidget::event(event); \\Line A
}
Также у меня есть следующие строки в конструкторе класса:
this->grabGesture(Qt::SwipeGesture);
this->grabGesture(Qt::PanGesture);
this->grabGesture(Qt::PinchGesture);
this->setAttribute(Qt::WA_AcceptTouchEvents);
Что я нахожу очень странным, так это то, что при запуске такого приложения оно не распознает никаких жестов. Однако при удалении последней строки функции (строка A выше) жесты внезапно распознаются, но виджет не окрашивается.
Некоторые характеристики: В настоящее время я использую Qt 5.2.0, собирая его на Samsung Galaxy Note 10.1 GT-N8010 под управлением Android 4.1.2.
Кто-нибудь есть какие-либо предложения о том, как я могу сделать это как с нарисованным виджетом, так и с распознаванием жестов?
Кажется добавление строк
this->grabGesture(Qt::SwipeGesture);
this->grabGesture(Qt::PanGesture);
this->grabGesture(Qt::PinchGesture);
this->setAttribute(Qt::WA_AcceptTouchEvents);
чтобы родительский класс конструктора исправил проблему.
Других решений пока нет …