Qt - 从资源加载htm文件

问题描述 投票:0回答:3

我在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());

但它没有帮助。

qt user-interface qwebview qwebkit
3个回答
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枚举。


1
投票

我会先试试这个:

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

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

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

myWebView->setHtml(stringFromResource);

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

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.