我正在使用 Qt 和 PyQt4 开发一个 kiosk Web 浏览器。除了一个怪癖之外,QWebView 似乎工作得很好。
如果 URL 由于任何原因无法加载,我想将用户重定向到自定义错误页面。我已经使用 loadFinished() 信号来检查结果,并在必要时使用 QWebView.load() 更改自定义页面的 URL。但是,我尝试在此处加载的任何页面都无法提取 CSS 或图像等外部资源。
使用 QWebView.load() 在启动时设置初始页面似乎工作正常,并且单击自定义错误页面上的任何链接将导致目标页面加载正常。只是错误页面不起作用。
我真的不知道下一步该去哪里。我已经包含了一个应用程序的源代码,该应用程序将复制下面的问题。它将 URL 作为命令行参数 - 有效的 URL 将正确显示,错误的 URL(例如 DNS 解析失败)将重定向到 Google,但 Logo 丢失。
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_())
如果有人能提供一些建议,我们将不胜感激。
最佳答案
不知道为什么这不起作用,但类似
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>")
是的。
关于qt - QWebView不加载外部资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293983/