QWebEnginePage:禁用链接

时间:2016-11-22 17:15:06

标签: python-3.x pyqt pyqt5

我正在将一个软件从PyQt4移植到PyQt5。

使用PyQt4,我曾经使用QWebView来渲染html字符串(所以,没有网页浏览,只是一些渲染)。因此,我可以使用此设置禁用“浏览”:

self.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)

self是我的QWebView。

但是,我现在被迫QtWebEngineWidgets.QWebEngineView。这不是那么糟糕,但我不能再使用之前的设置了。

QtWebEngineWidgets.QWebEnginePage没有DelegateAllLinks设置。

我想禁用视图中的所有链接,因此用户将无法点击其中一个链接并弄乱我的软件。

你有什么想法吗?

1 个答案:

答案 0 :(得分:2)

首先:您是否绝对确定需要使用完整的Web浏览器来呈现一些静态HTML? QTextBrowser类仅支持HTML4的有限子集,但如果你的html很简单,那么它将比像QWebEngineView这样的超重量级类更好。

无论如何,如果你真的必须使用QWebEngineView类,setLinkDelegationPolicy的唯一替代方法是重新实现网页的acceptNavigationRequest方法:

class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
    def acceptNavigationRequest(self, url, navtype, mainframe):
        return False