QWebView 不加载外部资源
Posted
技术标签:
【中文标题】QWebView 不加载外部资源【英文标题】:QWebView not loading external resources 【发布时间】:2010-02-19 04:02:16 【问题描述】:我正在开发一个使用 Qt 和 PyQt4 的信息亭网络浏览器。 QWebView 似乎工作得很好,除了一个怪癖。
如果由于某种原因无法加载 URL,我想将用户重定向到自定义错误页面。我已经使用 loadFinished() 信号来检查结果,并在必要时使用 QWebView.load() 将 URL 更改为自定义页面。但是,我尝试在此处加载的任何页面都无法提取 CSS 或图像等外部资源。
使用 QWebView.load() 设置启动时的初始页面似乎可以正常工作,单击自定义错误页面上的任何链接都会导致目标页面加载正常。只是错误页面不起作用。
我真的不知道下一步该去哪里。我已经包含了一个应用程序的源代码,它将复制下面的问题。它将 URL 作为命令行参数 - 有效的 URL 将正确显示,错误的 URL(例如 DNS 解析失败)将重定向到 Google,但缺少徽标。
import sys from PyQt4 import QtGui, QtCore, QtWebKit
class MyWebView(QtWebKit.QWebView):
def __init__(self, parent=None):
QtWebKit.QWebView.__init__(self, parent)
self.resize(800, 600)
self.load(QtCore.QUrl(sys.argv[1]))
self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.checkLoadResult)
def checkLoadResult(self, result):
if (result == False):
self.load(QtCore.QUrl('http://google.com'))
app = QtGui.QApplication(sys.argv)
main = MyWebView()
main.show()
sys.exit(app.exec_())
如果有人能提供一些建议,将不胜感激。
【问题讨论】:
【参考方案1】:不知道为什么这不起作用,但类似
def checkLoadResult(self, result):
if (result == False):
self.page().mainFrame().sethtml ( "<html><head><h1>Not Found</h1></head>\
<body><p> Search at <a href='http://google.com'> google </a>\
</p></body> </html>")
确实如此。
【讨论】:
以上是关于QWebView 不加载外部资源的主要内容,如果未能解决你的问题,请参考以下文章