Я работаю над удобным для пользователя браузером с помощью примера 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?
прохладный, это работает! :-D – penk