QWebView.contextMenu을 다시 구현하고 QWebPage.createStandardContextMenu으로 표준 메뉴를 생성하여 추가 메뉴 항목을 추가 할 수 있습니다.
그러면 URL (있는 경우)을 제공하기 위해 상황에 맞는 메뉴가 요청 된 위치에서 hit-test result을 얻으십시오.
from PyQt4 import QtGui, QtWebKit
class Browser(QtWebKit.QWebView):
def __init__(self):
super(Browser, self).__init__()
self.setHtml('''
<html><head><title>Test Page</title>
<body>
<p><a href="https://stackoverflow.com">link</a></p>
</body>
</html>
''')
def contextMenuEvent(self, event):
menu = self.page().createStandardContextMenu()
hit = self.page().currentFrame().hitTestContent(event.pos())
url = hit.linkUrl()
if not url.isEmpty():
menu.addSeparator()
action = menu.addAction('Download')
action.triggered.connect(lambda: self.download(url))
menu.exec_(event.globalPos())
def download(self, url):
print('download:', url)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
browser = Browser()
browser.setGeometry(800, 200, 400, 200)
browser.show()
sys.exit(app.exec_())
감사합니다 :
여기에 기본적인 아이디어의 간단한 데모입니다! 히트 테스트 결과는 내가 놓친 부분이었습니다! – Rigel