Python 将项目添加到标准QWebView上下文菜单

Python 将项目添加到标准QWebView上下文菜单,python,qt4,pyqt4,contextmenu,qwebview,Python,Qt4,Pyqt4,Contextmenu,Qwebview,QWebView的实现有一个标准的上下文菜单。我想更改它并创建自己的-或者将“在新选项卡中打开”添加到标准上下文菜单,然后将其连接到我的应用程序。如何操作?您可以重新实现QWebView.contextMenuEvent: class WebView(QtWebKit.QWebView): def __init__(self, parent=None): super(WebView, self).__init__(parent) self.newTabAc

QWebView的实现有一个标准的上下文菜单。我想更改它并创建自己的-或者将“在新选项卡中打开”添加到标准上下文菜单,然后将其连接到我的应用程序。如何操作?

您可以重新实现
QWebView.contextMenuEvent

class WebView(QtWebKit.QWebView):
    def __init__(self, parent=None):
        super(WebView, self).__init__(parent)
        self.newTabAction = QtGui.QAction('Open in new tab', self)
        self.newTabAction.triggered.connect(self.createNewTab)

    def createNewTab(self):
        url = self.newTabAction.data()
        print('create new tab:', url.toString())

    def contextMenuEvent(self, event):
        menu = self.page().createStandardContextMenu()
        hit = self.page().currentFrame().hitTestContent(event.pos())
        url = hit.linkUrl()
        if url.isValid():
            self.newTabAction.setData(url)
            menu.addAction(self.newTabAction)
        menu.exec_(event.globalPos())

如果不想使用标准上下文菜单,只需使用
QtGui.QMenu()
创建自己的上下文菜单。

您尝试过什么吗?你能给我们看一些代码吗?你能告诉我在…setContextMenuPolicy(0)(关闭)之后我能做什么吗。如何创建新的contextmenu?谢谢,它适用于所有网页。但我只想在链接上悬停。谢谢!我能够成功地使用它来实现图像的上下文菜单(通过将
linkUrl
替换为
imageUrl
)。