Chromium et Qt rassemblés dans Qt WebEngine

Un certain temps après le port de Firefox sur Qt en lieu et place de GTK+, c’est au tour de Chromium, la version open source du navigateur Web de Google, d’être le sujet d’expérimentations. Ce projet ne se compose pas que d’un moteur de rendu, il s’agit d’une implémentation complète d’une plateforme Web, de la pile de protocoles réseau au framework multimédia, le tout disponible sur un grand nombre de plateformes (tout comme Qt). L’objectif récemment poursuivi par des employés de Digia était de laisser des développeurs Qt utiliser des briques de l’environnement Chromium, au sein même de Qt Quick 2 et des widgets.

Il s’agit juste à présent d’un prototype, pour lequel la portabilité n’a pas été la première des priorités (il ne supporet actuellement que X11 sous Linux), plutôt de minimiser les modifications dans le code de Chromium. Ainsi, la série de classes QNetworkAccessManager n’est pas intégrée, le système de compilation utilise gyp et ninjas par derrière qmake. L’API n’est actuellement pas stable et le code pourrait ne jamais être supporté officiellement.

QtWebEngine se base sur Qt 5.1. Pour le compiler, il faut installer les dépendances :

sudo apt-get build-dep chromium-browser

Ensuite, télécharger les sources de Chromium :

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PWD/depot_tools:$PATH
fetch chromium --nosvn=True
export CHROMIUM_SRC_DIR=$PWD/src

De là, télécharger QtWebEngine et appliquer les modifications à Chromium :

git clone git://gitorious.org/qt-labs/qtwebengine.git
./qtwebengine/patches/patch-chromium.sh

Finalement, compiler QtWebEngine :

cd qtwebengine && qmake && make

Le projet vient actuellement avec deux démos, l’une utilise Qt Quick 2 et l’autre les widgets, implémentant des navigateurs Web simplistes basés sur Chromium.

Source : Experimenting with Chromiumâ„¢ and Qt.
Sources de QtWebEngine.

Nouveautés de Qt Quick dans Qt 5.1

Depuis la version 2.0 de Qt Quick distribuée avec Qt 5.0, bien des choses ont été ajoutées dans l’environnement de développement déclaratif d’interfaces. Notamment, les Qt Quick Components for Desktop, déjà rendus compatibles avec Qt 5.0, feront partie officiellement de Qt Quick.

Dispositions

Les méthodes précédentes de positionnement des contrôles (soit les ancres et un positionnement à la main) fournissaient déjà une certaine flexibilité. Cependant, dès que l’interface devient redimensionnable, ces outils montrent leurs limites. Le module QtQuick.Layouts vient en complément dans ces situations pour construire des dispositions plus flexibles encore.

Voir aussi l’article Présentation des mises en page avec Qt Quick.

Qt Quick Layouts

Contrôles

Les contrôles Qt Quick sont les équivalents directs des widgets traditionnels. Les versions précédentes de Qt Quick ne fournissaient que des primitives de relativement bas niveau, sans boutons, menus ou autres barres de progression (il fallait les coder soi-même ou utiliser un add-on). Désormais, Qt Quick vient avec QtQuick.Controls, un module officiellement supporté qui comble ce manque.

Qt Quick Controls

Vues

En plus de ces contrôles, une série de vues est également disponible. Par exemple, SplitView supporte des redimensionnements verticaux ou horizontaux entre des items d’une vue, tandis que ScrollView complémente Flickable avec une barre de défilement dans son cadre.

SplitView
ScrollView

ListView était très utile pour afficher des listes, mais nettement moins pour un tableau d’items, très fréquemment utilisé. TableView vient combler ce manque avec une apparence native, en plus de laisser l’utilisateur réarranger les colonnes et sélectionner des lignes. De plus, ces vues sont personnalisables, afin de laisser la possibilité de créer une application à l’apparence entièrement unique.

TableView

Ces composants ont été étudiés pour bien fonctionner sur toutes les plateformes (cependant, il va sans dire que, pour qu’une application complète fonctionne bien sur une plateforme plus particulière telle qu’une tablette ou un smartphone, il faudra l’adapter). Sur ces périphériques mobiles, StackView est plus adapté, en fournissant une navigation en cascade à travers une série de pages.

StackView

Gestion des plateformes

Le problème des applications Qt Quick était l’impossibilité de déterminer la plateforme d’exécution facilement, c’est pourquoi cette nouvelle version apporte la propriété globale Qt.platform.os, qui donne accès directement à la plateforme sous-jacente.

Boîtes de dialogue standard

QtQuick.Dialogs propose quelques boîtes de dialogue standard (sélection de couleur ou de fichier, pour le moment), qui appelleront généralement directement les boîtes de dialogue natives.

Gestion des fenêtres

Qt 5.0 avait apporté le support des fenêtres, maintenant amélioré. Définir une fenêtre dans une autre la rendra modale, la fenêtre fille devrait être centrée dans la fenêtre parente. Un signal de fermeture est également disponible pour répondre correctement aux demandes de fermeture.

Exposition du texte au code C++

Le composant TextEdit avait un grand problème : il ne pouvait qu’afficher du texte mis en forme, alors que des applications Qt plus complexes ont besoin de complétion automatique, de coloration syntaxique, de support de l’impression, ce qui requiert un plug-in C++, très souvent. Avec cette exposition du texte aux plug-ins C++, il a été possible de réimplémenter l’exemple TextEdit avec Qt Quick.

Texte

Toutes ces nouveautés montrent la dynamique derrière Qt Quick, la plateforme devient mature et utilisable pour bien d’autres types d’applications.