2013-03-09 226 views
0

我在QWebView小部件中打開本地html文件時遇到問題。 所以,我不喜歡這樣寫道:Qt - 從資源中加載htm文件

QWebView *myWebView = new QWebView;  
myWebView->load(QUrl("qrc:/index.htm")); 

當然,我已經在資源增加的index.htm。但在QWebView中有白色屏幕。 我試圖用Firefox打開本地文件,沒事的。

我應該怎麼做才能解決它?

PS:htm頁面使用js和css文件,但我也將它們添加到資源中。 PSS:另外,我試圖做這樣的方式:

QFile res(":/index.htm"); 
res.open(QIODevice::ReadOnly|QIODevice::Text); 
myWebView->setHtml(res.readAll()); 

,但它並不能幫助。

回答

1

你試過只加載文件的QByteArray到驗證它正確加載?

編輯:

喜歡的東西(未經測試,但你的想法):

QFile file(":/index.htm"); 
QByteArray dump = file.readAll(); 
qDebug() << "contents: " << dump; 
qDebug() << "error status: " << file.error(); 

error()方法返回QFile::FileError枚舉。

+0

你可以解釋一下關於QByteArray的更多細節嗎?是的,我敢肯定,只有「/」前綴 – 2013-03-09 16:22:10

+0

只能打印'「」'這是什麼意思? – 2013-03-09 17:34:44

+0

這意味着QFile無法訪問資源中的文件,或者文件是空的。所以問題與QWebView無關,這是一個資源問題。 – hyde 2013-03-09 18:03:35

1

我先試試這個:

connect(myWebView, SIGNAL(loadFinished(bool)), this, SLOT(finishedLoad(bool))); 
.... 
void finishedLoad(bool ok){ 
    qDebug() << ok; 
} 

然後,你就會知道,如果Web視圖,同時加載遇到錯誤。該錯誤可能是由於格式不正確的HTML等

另一種方法是將資源的內容加載到一個字符串,然後:

myWebView->setHtml(stringFromResource); 
+0

嗯,它返回'假'。好吧,我試圖使用sethtml,現在它返回'真',但再次出現白屏 – 2013-03-09 16:14:30

1

你的問題是在使用資源文件。以下是一些建議:

  • 您的文件是否確實位於驅動器上?
  • 在構建之前是否保存過資源文件?嘗試保存所有內容並進行清理構建。
  • 首先檢查(如果需要,顯示)你的.qrc -file(它是類似xml的文本文件),它是正確的嗎?您是否添加了前綴(<qresource prefix="/">)等
  • 嘗試使用別名<file alias="cut-img.png">images/cut.png</file>,然後從應用程序中以:/cut-img.png的身份訪問您的文件。

當然,不要忘記檢查文件 - http://qt-project.org/doc/qt-4.8/resources.html

祝你好運!

+0

感謝您的回答 – 2013-03-09 20:24:16