Qt - 从资源加载htm文件

时间:2013-03-09 15:08:37

标签: qt user-interface qwebview qwebkit

我在QWebView小部件中打开本地html文件时出现问题。 所以,我这样做:

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

当然,我在资源中添加了index.htm。但在QWebView中有白屏。 我尝试用Firefox打开本地文件,没关系。

我该怎么办才能修复它?

PS:htm-page使用js和css文件,但我也将它们添加到资源中。 PSS:另外,我试着这样做:

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

但它没有帮助。

3 个答案:

答案 0 :(得分:1)

我会先试试这个:

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

然后您将知道Web视图在加载时是否遇到错误。错误可能是由于html格式不正确等原因造成的。

另一种方法是将资源的内容加载到字符串中,然后:

myWebView->setHtml(stringFromResource);

答案 1 :(得分:1)

您是否尝试过将文件加载到QByteArray以验证其是否正确加载?

编辑:

像(未经测试,但你明白了):

QFile file(":/index.htm");
if(file.open(QIODevice::ReadOnly)) {
    QByteArray dump = file.readAll();
    qDebug() << "contents: " << dump;
} else {
    qDebug() << "error: " << file.error();
}

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

答案 2 :(得分:1)

您的问题在于使用资源文件。以下是一些建议:

  • 您的档案确实位于云端硬盘上吗?
  • 您是否在构建之前保存了资源文件?尝试保存所有内容并进行清理构建。
  • 首先检查(如果需要,显示)您的.qrc - 文件(它是类似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

祝你好运!