2014-02-12 4 views
1

При написании простого приложения для Android в Qt, я столкнулся с неудобной дилеммой:Qt Android вопрос жест

У меня есть подкласс 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); 

что я нахожу очень своеобразен, что при запуске приложения, как это, он не признает любые жесты. Однако при удалении последней строки функции (строка А выше) жесты распознаются внезапно, но виджет не окрашивается.

Некоторые спецификации: В настоящее время я запускаю Qt 5.2.0, компилируя на Samsung Galaxy Note 10.1 GT-N8010 под управлением Android 4.1.2.

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

ответ

0

Кажется, добавив линии

this->grabGesture(Qt::SwipeGesture); 
this->grabGesture(Qt::PanGesture); 
this->grabGesture(Qt::PinchGesture); 
this->setAttribute(Qt::WA_AcceptTouchEvents); 

в родительский конструктор класса фиксированной проблемы.

+0

Как вы его исправили? Я пытаюсь, как вы сказали, но он не работает – Viet

+0

Прошло некоторое время с тех пор, как я работал над этим, но я попытаюсь ответить из памяти. Насколько я помню, возникла проблема, когда обработчик события родительского класса не имел никакого способа обработки жестов касания. К счастью, у меня была возможность изменить это, и поэтому решил решить мою проблему таким образом. Также обратите внимание, что я использовал Qt 5.2.0. Я не могу точно сказать, работает ли это решение в других версиях. – Tom