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でコンテキストメニューをトリガすることができますか?
cool、that works! :-D – penk