将项目添加到标准 QWebView 上下文菜单
Add items to the standard QWebView context menu
QWebView 的实现有一个标准的上下文菜单。我想更改它并创建我自己的 - 或者将 "Open in new tab" 添加到标准上下文菜单,然后将其连接到我的应用程序。怎么做?
您可以重新实现 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()
创建您自己的。
QWebView 的实现有一个标准的上下文菜单。我想更改它并创建我自己的 - 或者将 "Open in new tab" 添加到标准上下文菜单,然后将其连接到我的应用程序。怎么做?
您可以重新实现 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()
创建您自己的。