2014-02-12 58 views
1

在寫Qt中一個簡單的Android應用程序,我遇到了一個不舒服的窘境: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); 

我覺得很奇怪是什麼運行這樣的應用程序時,它不承認任何手勢。但是,當刪除功能的最後一行(上面的A行)時,手勢突然被識別,但小部件未被繪製。

一些規格:我目前正在運行Qt 5.2.0,編譯運行Android 4.1.2的三星Galaxy Note 10.1 GT-N8010。

有沒有人有任何建議,我怎麼可以使這個小部件被繪和手勢識別運行?

回答

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