是否可以将带有js的html嵌入到QwebKit中

时间:2010-10-24 12:12:51

标签: c++ html qt embed qwebkit

我需要在我的应用程序加载时将java脚本对象加载到QwebKit中 我可以使用setHtml与html和java脚本字符串格式化但很难 维护。
我的问题是我可以将html和java脚本作为资源嵌入到Qwebkit中吗? 此外,我不知道应用程序用户可以使用html和javascript

1 个答案:

答案 0 :(得分:3)

是的,你可以。

只需将您的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类型等等(例如,如果资源是图像)你自己......)