2010-10-24 4 views
2

aurai-je besoin de charger des objets java script dans QwebKit quand mon application charge
je peux utiliser setHtml avec le code html et la chaîne de java script formaté, mais il est très difficile à Maintenir .
Ma question est: est-ce que je peux intégrer le script html et java comme ressource dans Qwebkit?
Aussi je ne fais pas ce que le html et le javascript soient disponibles pour les utilisateurs de l'applicationEst-il possible d'intégrer html avec js dans QwebKit

Répondre

3

Oui, vous pouvez.

Il suffit d'ajouter votre JS/CSS au fichier de ressources (recherchez les documents Qt si vous ne savez pas comment), puis dans votre HTML utilisez simplement qrc:/file/path/or/alias.

Par exemple, si j'ajoute JQuery au fichier de ressources, aliasé comme /js/jquery, puis à le charger, je placer ceci dans mon fichier HTML:

<script type="text/javascript" src="qrc:/js/jquery"></script> 

Chargement d'un fichier HTML à partir d'un fichier de ressources semble être plus d'effort que je ne peux pas sembler obtenir QWebKit::setUrl(QUrl("qrc:/resource/path")) pour travailler (":/resource/path" ne fonctionne pas pour moi non plus). Ce que je fais actuellement est ceci:

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")); 

Créer des liens vers d'autres ressources HTML peut cependant poser problème. Si quelqu'un sait comment faire face à cela, s'il vous plaît commenter! (J'imagine que vous pouvez le faire en réimplémentant la classe manager de réseau pour intercepter quand webkit envoie des requêtes http et si elles sont pour qrc:/urls, lisez le fichier du système de ressources et répondez avec ça, bien que vous deviez gérer les types mime et tel (par exemple, si la ressource est une image) vous-même ...)