Ich arbeite an einem Finger freundliche Browser Übung mit FlickCharm Beispiel und QtWebKit, hier ist all the source code Ich habe so weit.Qt 4.7: Trigger Kontextmenü durch Gesten
Ich möchte Kontext ausgelöst wird, um lange drücken (tap-and-hold), zur Zeit kann ich die QGestureEvent und Position in eventFilter()
von
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
}
}
}
Mein erster Versuch erhalten wird, einen Rechtsklick Ereignis Simulation von sendEvent()
mit :
QMouseEvent pressEvent(QEvent::MouseButtonPress, w->pressPos,
Qt::RightButton, Qt::RightButton, Qt::NoModifier);
QApplication::sendEvent(webView->page(), &pressEvent);
Es scheint, wie die Veranstaltung, hat senden, aber das Kontextmenü nicht auslösen, also habe ich versucht customContextMenu()
und emittieren customContextMenuRequested()
Signal direkt zu implementieren:
emit QWidget::customContextMenuRequested(w->pressPos);
aber mit Fehler fehlgeschlagen:
error: cannot call member function ‘void QWidget::customContextMenuRequested(const QPoint&)’ without object
Wie kann ich das Kontextmenü von QGestureEvent auslösen?
cool, das funktioniert! :-D – penk