我正在将一个软件从PyQt4移植到PyQt5。
使用PyQt4,我曾经使用QWebView来渲染html字符串(所以,没有网页浏览,只是一些渲染)。因此,我可以使用此设置禁用“浏览”:
self.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
self
是我的QWebView。
但是,我现在被迫QtWebEngineWidgets.QWebEngineView
。这不是那么糟糕,但我不能再使用之前的设置了。
QtWebEngineWidgets.QWebEnginePage
没有DelegateAllLinks设置。
我想禁用视图中的所有链接,因此用户将无法点击其中一个链接并弄乱我的软件。
你有什么想法吗?
答案 0 :(得分:2)
首先:您是否绝对确定需要使用完整的Web浏览器来呈现一些静态HTML? QTextBrowser类仅支持HTML4的有限子集,但如果你的html很简单,那么它将比像QWebEngineView
这样的超重量级类更好。
无论如何,如果你真的必须使用QWebEngineView
类,setLinkDelegationPolicy
的唯一替代方法是重新实现网页的acceptNavigationRequest方法:
class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
def acceptNavigationRequest(self, url, navtype, mainframe):
return False