2016-08-15 6 views
1

QWebViewの実装には標準のコンテキストメニューがあります。私はそれを変更して自分自身を作成するか、標準のコンテキストメニューに「新しいタブで開く」を追加して、それを自分のアプリケーションに接続します。どうやってするの?標準のQWebViewコンテキストメニューに項目を追加します

+0

試しましたか?私たちにいくつかのコードを教えてくれますか? – jHilscher

+0

あなたが私が何をすることができるかを私にエプレーンできますか?setContextMenuPolicy(0)(ターンオフ)。新しいコンテキストメニューを作成するには? – 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

ありがとう、それはすべてのWebページで動作します。しかし、私はリンクにぶら下がってほしいです。 – VolArt

+0

@VolArt。私はリンクのテストを追加しました。あなたが答えを見つけた場合は、upv​​ote/acceptしてください。 – ekhumoro

+0

ありがとう!私はこれをうまく使ってイメージ用のコンテキストメニューを実装することができました( 'linkUrl'を' imageUrl'に置き換えることによって)。 – Glutanimate

関連する問題