2010-10-24 3 views
2

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

ответ

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