0

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

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

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

我应该怎么做才能修复它?

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

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

但这无济于事。

4

3 回答 3

1

我会先试试这个:

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

然后你会知道 web 视图在加载时是否遇到错误。该错误可能是由于 html 格式不正确等造成的。

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

myWebView->setHtml(stringFromResource);
于 2013-03-09T15:52:35.360 回答
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枚举。

于 2013-03-09T16:02:19.170 回答
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

祝你好运!

于 2013-03-09T19:03:44.337 回答