Extension de Qt WebKit

| traducteur : Thibaut Cuvelier | Qt Developer Network |

Le module QtWebKit rend possible aux développeurs la tâche d'étendre et de combiner les fonctionnalités de Qt et de WebKit. Ce design hybride entre C++ et technologies Web devient de plus en plus populaire pour une bonne centaine de raisons, parmi lesquelles on trouve la grande communauté des développeurs Web expérimentés.

Commentez !

- Titre : Extension de Qt WebKit

- Auteurs : traducteur : Thibaut Cuvelier, Qt Developer Network

- Parution : 15 janvier 2011

- Mise à jour : 27 janvier 2011

- Licence : Creative Commons Attribution-ShareAlike 2.5 Generic

Sommaire

- I. L'article original

- II. Construire des interfaces réseau

- III. Ajouter des widgets Qt dans des interfaces Web

- IV. Ajouter le support de nouveaux protocoles à WebKit

I - L'article original

Le Qt Developer Network est un réseau de développeurs utilisant Qt afin de partager leur savoir sur ce framework. Vous pouvez le consulter en anglais.

Nokia, Qt, Qt Quarterly et leurs logos sont des marques déposées de Nokia Corporation en Finlande et/ou dans les autres pays. Les autres marques déposées sont détenues par leurs propriétaires respectifs.

Cet article est la traduction de Extending Qt WebKit.

Merci à U. Milité pour sa relecture !

II - Construire des interfaces réseau

Des designs hybrides requièrent souvent un peu de code Qt pour gérer les interactions réseau. L'article Utiliser un service Web simple avec Qt prend l'exemple du service Web MathTran pour prévisualiser une entrée LaTeX dans un éditeur de texte en image. Même s'il date de 2007 et utilise certaines techniques obsolètes, cet article mérite une lecture approfondie.

III - Ajouter des widgets Qt dans des interfaces Web

L'article de David Boddie, Connexion au Web montre comment intégrer des widgets Qt dans des interfaces utilisateur Web. Il commence par les bases de l'utilisation d'un widget QWebView pour afficher une page Web :

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebView view;
view.load(QUrl("http://www.trolltech.com/"));
view.show();
return app.exec();
}

Et continue en montrant comment utiliser QWebFactoryPlugin pour créer un widget simple pour afficher des fichiers CSV.

IV - Ajouter le support de nouveaux protocoles à WebKit

L'article suivant du même auteur, Ajouter de nouveaux protocoles à WebKit, utilise les API d'accès réseau de Qt avec WebKit pour transformer QWebView en un client FTP simple. Ces API sont une technologie qui veut remplacer beaucoup de fonctionnalités des classes QHttp et QFtp, mais pas toutes. Bien qu'elles soient spécifiques à Qt, le module QtWebKit les intègre avec WebKit pour autoriser les personnalisations du moteur du navigateur par les développeurs d'applications Qt. Cela signifie aussi que l'on peut contrôler la manière dont le moteur du navigateur obtient et rend le contenu.

Puisque QNetworkRequest et QNetworkReply sont prévues pour fournir une abstraction réutilisable des opérations réseau, il semble évident que l'utilisation de ces classes pour ajouter le support du FTP aux navigateurs basés sur QtWebKit est la piste à privilégier. Pour ce faire, on doit d'abord examiner les classes d'accès réseau avant de voir comment le module QtWebKit les utilise pour gérer les opérations réseau.

Voici comment remplacer un gestionnaire d'accès pour une QWebPage en dérivant de QNetworkAccessManager et réimplémentant sa fonction createRequest() pour autoriser les URL FTP.

NetworkAccessManager::NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent)
: QNetworkAccessManager(parent)
{
setCache(manager->cache());
setCookieJar(manager->cookieJar());
setProxy(manager->proxy());
setProxyFactory(manager->proxyFactory());
}