2010-02-19 158 views
4

我正在使用Qt和PyQt4的信息亭網頁瀏覽器。除了一個怪癖外,QWebView似乎工作得很好。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>") 

做一些事情。