2013-03-09 135 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