2016-08-15 78 views
1

QWebView的實現有一個標準的上下文菜單。我想改變它並創建我自己的 - 或在標準上下文菜單中添加「在新選項卡中打開」,然後將其連接到我的應用程序。怎麼做?添加項目到標準的QWebView上下文菜單

+0

你嘗試過什麼嗎?你能告訴我們一些代碼嗎? – jHilscher

+0

你能爲我做些什麼,我可以做,... setContextMenuPolicy(0)(關閉)。如何創建新的contextmenu? – VolArt

回答

2

您可以重新實現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()創建自己的。

+0

謝謝,它適用於所有網頁。但我只想徘徊在鏈接上。 – VolArt

+0

@VolArt。我已經添加了鏈接測試。如果您發現有用的答案,請注意/接受。 – ekhumoro

+0

謝謝!我能夠成功地使用它來實現圖像的上下文菜單(通過用'imageUrl'替換'linkUrl')。 – Glutanimate

相關問題