Qt - 从资源中加载htm文件
我在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());
,但它并不能帮助。
你试过只加载文件的QByteArray到验证它正确加载?
编辑:
喜欢的东西(未经测试,但你的想法):
QFile file(":/index.htm");
QByteArray dump = file.readAll();
qDebug() << "contents: " << dump;
qDebug() << "error status: " << file.error();
的error()
方法返回QFile::FileError
枚举。
我先试试这个:
connect(myWebView, SIGNAL(loadFinished(bool)), this, SLOT(finishedLoad(bool)));
....
void finishedLoad(bool ok){
qDebug() << ok;
}
然后,你就会知道,如果Web视图,同时加载遇到错误。该错误可能是由于格式不正确的HTML等
另一种方法是将资源的内容加载到一个字符串,然后:
myWebView->setHtml(stringFromResource);
嗯,它返回'假'。好吧,我试图使用sethtml,现在它返回'真',但再次出现白屏 – 2013-03-09 16:14:30
你的问题是在使用资源文件。以下是一些建议:
- 您的文件是否确实位于驱动器上?
- 在构建之前是否保存过资源文件?尝试保存所有内容并进行清理构建。
- 首先检查(如果需要,显示)你的
.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-09 20:24:16
你可以解释一下关于QByteArray的更多细节吗?是的,我敢肯定,只有“/”前缀 – 2013-03-09 16:22:10
只能打印'“”'这是什么意思? – 2013-03-09 17:34:44
这意味着QFile无法访问资源中的文件,或者文件是空的。所以问题与QWebView无关,这是一个资源问题。 – hyde 2013-03-09 18:03:35