void WebView::contextMenuEvent(QContextMenuEvent *event) { QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); if (!r.linkUrl().isEmpty()) { QMenu menu(this); menu.addAction(pageAction(QWebPage::OpenLink)); // building a custom signal for external browser action QSignalMapper* signalMapper = new QSignalMapper (this); signalMapper->setProperty("url", QVariant(r.linkUrl())); connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(triggerContextMenuAction(int))); QAction* extAction = menu.addAction(tr("Open in External Browser")); connect (extAction, SIGNAL(triggered()), signalMapper, SLOT(map())); signalMapper->setMapping(extAction, QWebPage::OpenLink); QAction* newAction = menu.addAction(tr("Open in new window")); connect (newAction, SIGNAL(triggered()), signalMapper, SLOT(map())); signalMapper->setMapping(newAction, QWebPage::OpenLinkInNewWindow); menu.addAction(pageAction(QWebPage::DownloadLinkToDisk)); menu.addAction(pageAction(QWebPage::CopyLinkToClipboard)); menu.exec(mapToGlobal(event->pos())); return; }