【发布时间】:2011-04-29 19:38:57
【问题描述】:
当我的应用程序正在加载时,我是否需要将 java 脚本对象加载到 QwebKit
我可以将 setHtml 与 html 和 java 脚本字符串一起使用,但它很难
维护。
我的问题是我可以将 html 和 java 脚本作为资源嵌入到 Qwebkit 中吗?
另外我不知道应用程序用户可以使用 html 和 javascript
【问题讨论】:
当我的应用程序正在加载时,我是否需要将 java 脚本对象加载到 QwebKit
我可以将 setHtml 与 html 和 java 脚本字符串一起使用,但它很难
维护。
我的问题是我可以将 html 和 java 脚本作为资源嵌入到 Qwebkit 中吗?
另外我不知道应用程序用户可以使用 html 和 javascript
【问题讨论】:
是的,你可以。
只需将您的 JS/CSS 添加到资源文件中(如果您不知道怎么做,请查阅 Qt 文档),然后在您的 HTML 中简单地使用 qrc:/file/path/or/alias。
例如,如果我将 JQuery 添加到资源文件中,别名为 /js/jquery,然后加载它,我会将其放入我的 HTML 文件中:
<script type="text/javascript" src="qrc:/js/jquery"></script>
从资源文件加载 HTML 文件似乎更费力,因为我似乎无法让 QWebKit::setUrl(QUrl("qrc:/resource/path")) 工作(“:/resource/path”对我也不起作用)。我目前做的是这样的:
QString readFile (const QString& filename)
{
QFile file(filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&file);
return stream.readAll();
}
return "";
}
...
myWebKitObject->setHtml(readFile("qrc:/html/index"));
但是,创建指向其他 HTML 资源的链接可能是个问题。如果有人知道如何处理这个问题,请发表评论! (我想你可以通过重新实现网络管理器类来拦截 webkit 发送 http 请求并且如果它们用于 qrc:/ urls,则可以从资源系统中读取文件并做出响应,但是你必须管理 mime 类型等等(例如,如果资源是图像)你自己......)
【讨论】: