Можно ли встроить html с js в QwebKit

мне нужно будет загружать объекты java-скрипта в QwebKit, когда мое приложение загружается
Я могу использовать setHtml с отформатированным html и строкой java-скрипта, но его очень сложно поддерживать.
Мой вопрос: могу ли я встроить html и java-скрипт в качестве ресурса в Qwebkit?
Также я не уверен, что html и javascript будут доступны для пользователей приложения.


person user63898    schedule 24.10.2010    source источник


Ответы (1)


Да, ты можешь.

Просто добавьте свой 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 и такие (например, если на ресурсе изображение) сами...)

person Community    schedule 26.10.2010