我正在将一个软件从PyQt4移植到PyQt5。
在PyQt4中,我曾经使用QWebView来呈现html字符串(所以,没有网页浏览,只是一些呈现)。因此,我可以禁用此设置的“浏览”:
self.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)self是我的QWebView。
然而,我现在不得不使用QtWebEngineWidgets.QWebEngineView。没那么糟,但我不能再用以前的设置了。
QtWebEngineWidgets.QWebEnginePage没有DelegateAllLinks设置。
我想禁用视图中的所有链接,这样用户就无法单击其中的一个链接,并破坏我的软件。
你知不知道?
发布于 2016-11-22 17:40:54
首先:你完全确定你需要使用一个完整的网页浏览器来呈现一些静态的html吗?QTextBrowser类只支持有限的HTML4子集,但是如果您的html是简单的,它将是一个比QWebEngineView这样的超重量级类更好的选择。
无论如何,如果您确实必须使用QWebEngineView类,那么替代setLinkDelegationPolicy的唯一方法是重新实现网页的acceptNavigationRequest方法:
class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
def acceptNavigationRequest(self, url, navtype, mainframe):
return Falsehttps://stackoverflow.com/questions/40747827
复制相似问题