2010-12-29 4 views
2

Я работаю над удобным для пользователя браузером с помощью примера FlickCharm и QtWebKit, вот all the source code У меня есть до сих пор.Qt 4.7: контекстное меню триггера по жесту

Я хочу, чтобы вызвать контекст с помощью длительного нажатия (водопроводная и хранения), в настоящее время я могу получить QGestureEvent и положение в eventFilter() по

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 
     } 
    } 
} 

Моя первая попытка имитирующей правильное событие щелчка с помощью sendEvent() :

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?

ответ

Смежные вопросы