2010-12-29 10 views
2

FlickCharmの例とQtWebKitを使用した、フレンドリーなブラウザの演習に取り組んでいます。これまでのところall the source codeです。Qt 4.7:ジェスチャーによるコンテキストメニューのトリガー

私は現在、私は私の最初の試みはsendEvent()を使用して、右クリックイベントをシミュレートしている

QGestureEvent *gestureEvent = dynamic_cast<QGestureEvent*>(event); 
if (gestureEvent) { 
    if (const QGesture *g = gestureEvent->gesture(Qt::TapAndHoldGesture)) { 
     if (g->state() == Qt::GestureStarted) { 
      qDebug() << "tap-n-hold event started"; 

      QWebView *webView = dynamic_cast<QWebView*>(object); 
      FlickData *w = d->flickData.value(webView); 
      qDebug() << w->pressPos; // get position 
     } 
    } 
} 

によってeventFilter()にQGestureEventと位置を取得することができ、長押し(タップアンドホールド)して、コンテキストをトリガーします:

QMouseEvent pressEvent(QEvent::MouseButtonPress, w->pressPos, 
    Qt::RightButton, Qt::RightButton, Qt::NoModifier); 
QApplication::sendEvent(webView->page(), &pressEvent); 

イベントが送信でしたが、コンテキストメニューをトリガしないので、私はcustomContextMenu()を実装し、直接customContextMenuRequested()信号を発するようにしようとしたように思え:

emit QWidget::customContextMenuRequested(w->pressPos); 

が、エラーで失敗しました:

error: cannot call member function ‘void QWidget::customContextMenuRequested(const QPoint&)’ without object 

にはどうすればQGestureEventでコンテキストメニューをトリガすることができますか?

答えて

関連する問題