次のコードスニペットはPySideで動作し、PySide2で動作するように翻訳する必要があります。クリックされたとき 目的は、システムブラウザで開くようにすべてのリンクを強制することです(ウィジェットがそれらをロードしようとしているのではなく):しかしQWebEngineView - システムブラウザでリンクを開く方法
from PySide2.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
class HtmlView(QWebEngineView):
def __init__(self, parent=None):
super(HtmlView, self).__init__(parent)
self.page().setLinkDelegationPolicy(QWebEnginePage.DelegateAllLinks) # not working in PySide2
self.linkClicked.connect(self.openWebsite) # not working in PySide2
:
from PySide.QtWebKit import QWebView, QWebPage
class HtmlView(QWebView):
def __init__(self, parent=None):
super(HtmlView, self).__init__(parent)
self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) # not working in PySide2
self.linkClicked.connect(self.openWebsite) # not working in PySide2
これは、翻訳の私の試みでした、QWebEngineView .linkClickedは存在しません。QWebEngineView .setLinkDelegationPolicyまたは QWebEnginePage .DelegateAllLinks。
上記を除いてPySide2でこれを達成する最も良い方法は何ですか?
編集:トリガーされたQEventsをチェックしましたが、リンクがクリックされたときにイベントが発生しないようですので、PySide/Qt4.8のlinkClickedイベントはありません。あなたはacceptNavigationRequestを使用する必要が
おかげで、 率直
華麗なときに、URLを開く必要があります。 私が忘れていたことの1つ:(絶対的なリンクだけでなく、相対的なリンクも働かせるために)URLのコンテキストで開くリンクが必要です。私はこれがメインフレームとサブフレームの部分だと思いますか?それを今見て... –
@FrankRueter別の質問ですが、別の投稿を作成してください。私の答えがあなたに役立つなら、それを正しいものとしてマークすることを忘れないでください。 – eyllanesc
@FrankRueterあなたが質問で投稿を作成したので、投稿を作成するときに他の質問にお答えします:P – eyllanesc