bool WebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, NavigationType type) { QObject* view = parent(); QVariant value = view->property("keyboardModifiers"); if (!value.isNull()) { Qt::KeyboardModifiers modifiers = Qt::KeyboardModifiers(value.toInt()); if (modifiers & Qt::ShiftModifier) { QWebPage* page = createWindow(QWebPage::WebBrowserWindow); page->mainFrame()->load(request); return false; } if (modifiers & Qt::AltModifier) { openUrlInDefaultBrowser(request.url()); return false; } } return QWebPage::acceptNavigationRequest(frame, request, type); }
virtual void contextMenuEvent(QContextMenuEvent* event) { QMenu* menu = page()->createStandardContextMenu(); QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); if (!r.linkUrl().isEmpty()) { QAction* newTabAction = menu->addAction(tr("Open in Default &Browser"), this, SLOT(openUrlInDefaultBrowser())); newTabAction->setData(r.linkUrl()); menu->insertAction(menu->actions().at(2), newTabAction); } menu->exec(mapToGlobal(event->pos())); delete menu; }
static QMenu* createContextMenu(QWebPage* page, QPoint position) { QMenu* menu = page->createStandardContextMenu(); QWebHitTestResult r = page->mainFrame()->hitTestContent(position); if (!r.linkUrl().isEmpty()) { WebPage* webPage = qobject_cast<WebPage*>(page); QAction* newTabAction = menu->addAction("Open in Default &Browser", webPage, SLOT(openUrlInDefaultBrowser())); newTabAction->setData(r.linkUrl()); menu->insertAction(menu->actions().at(2), newTabAction); } return menu; }