Table des matières

Les modules de Qt 5

L’un des principaux changements que l’on trouvera dans Qt 5 est la réorganisation des modules. Les modules sont regroupés en deux groupes : les Essentials, installés automatiquement, et les Add-ons, installés à la demande. Puisque Qt 5 n’est pas encore en version finale, les informations données dans cet article sont susceptibles d’être modifiées.

Les modules Essentials

Le module Qt Core

Ce module fournit les fonctionnalités de base de Qt, excepté ce qui concerne l’interface graphique. Tous les autres modules sont liés à ce module. Voici la liste de quelques ajouts dans Qt 5 :

support des boutons supplémentaires sur les souris (souris pour joueurs), jusque 27 boutons pour XCB, XLIB ou DirectFB, jusque 16 pour Wayland, Evdev ou OS-X, jusque 8 pour BlackBerry/QNX et 5 sur Windows (limitation due au système).

Le module Qt Gui

Ce module fournit les fonctionnalités de base pour créer une interface utilisateur. Les anciennes classes QWidget et dérivées sont séparées dans un module indépendant. Ce module contient de nouvelles classes comme QWindow, QScreen, QSurfaceFormat permettant le support de fonctionnalités de base et est surtout destiné à être utilisé par les autres modules (QWidget, QQuickView, Qt 3D View, etc.).

En particulier, ce module fournit les classes QOpenGLxxx (QOpenGLFramebufferObject, QOpenGLShaderProgram, QOpenGLFunctions, QOpenGLContext, etc.) permettant de fournir l’accélération matérielle pour tous les modules graphiques (widgets traditionnels, Qt Quick). La classe QOpenGLContext est plus générique que QGLContext et est découplée de QWindow, pour permettre d’utiliser un contexte commun pour plusieurs affichages. QOpenGLPaintDevice permet d’utiliser directement QPainter sur un contexte OpenGL sans devoir dériver de QWindow ou QOpenGLFramebufferObject.

Voir l’article OpenGL dans Qt 5 pour plus de détails.

Le module Qt QML

Ce module permet d’utiliser le langage de script déclaratif QML grâce au QML engine. Il présente des améliorations des performances et des ajouts de fonctionnalités par rapport celui inclus dans Qt 4.

Le module Qt Js backend (JavaScript)

Ce module fournit un interpréteur JavaScript, permettant de scripter les applications écrites en C++ et en QML. Il utilise un nouveau moteur JS v8 plus rapide. Il inclut de nouvelles classes (QJSEngine, QJSValue), le support de nouveaux types (QColor avec les propriétés r, g, b et a, QVector4D constructible avec Qt.vector4d()). Il est possible d’ajouter des fonctionnalités dans un namespace avec la fonction qmlRegisterModuleApi et d’importer du QML et du JS directement dans un fichier JS.

Le module Qt Quick

Ce module permet de créer des interfaces dynamiques riches, en utilisant les modules QML et le JS. Cette nouvelle version de Qt Quick correspond au module « qtquick2″ alors que l’ancienne version correspond au module « qtquick1″. L’interface graphique de Qt Quick 2 se base maintenant sur scenegraph et permet l’accélération matérielle en utilisant les classes QOpenGLxxx de Qt Gui. On trouve de nouvelles classes (QQuickView, QQuickCanvas, QQuickItem et QQuickPaintedItem qui remplacent les classes équivalentes de QDeclarative), de nouveaux items (Canvas permet le support de l’API Context2D de HTML 5, le rendu est réalisé dans Canvas.Image et Canvas.FramebufferObject, avec support multithread en arrière-plan). Le moteur de particules 2D Qt Quick.Particles 2.0 et la collection d’effets de shaders qui étaient avant des projets séparés dans Qt Labs sont maintenant inclus dans Qt.

Le module Qt 3D

Le module Qt 3D est également un ancien projet provenant de Qt Labs et est inclus dans Qt 5. Il a permis dans Qt 4 l’ajout de nombreuses fonctionnalités de calculs 3D comme les classes QMatrix4×4, QGLShaderProgram et QVector3D. Il utilise en interne le module Qt QML et le support OpenGL de Qt Gui. Ce module contient deux bibliothèques : Qt 3D (pour utiliser directement la 3D en C++) et Qt 3D Quick (pour l’utilisation dans Qt Quick).

Plusieurs fonctionnalités sont ajoutées :

Le module Qt Location

Ce module est un ajout dans Qt 5, mais il existait déjà depuis des années comme sous-ensemble de Qt Mobility. Il fournit les services nécessaires pour la localisation : GPS, cartographie, etc. Il inclut une fonctionnalité permettant d’afficher des cartes avec MapQuickItem. L’affichage se base sur une approche modèle/vue et bénéficie de l’accélération OpenGL dans scenegraph. Les gestuelles pour les zooms et les panoramas dynamiques, le routage et le géocodage, l’ajout de repères sur les cartes sont pris en charge.

Le module Qt Network

Ce module fournit une interface portable pour utiliser les réseaux. Parmi les évolutions :

Les autres modules

Les modules Add-ons

Le module Qt Widget

Ce module fournit l’ensemble des classes QWidget et dérivées pour la compatibilité avec Qt 4. Il utilise la nouvelle architecture Qt Platform Abstraction (QPA).

Le module Qt Quick 1

Ce module permet d’utiliser la version de Qt Quick disponible dans Qt 4, pour compatibilité. Pour utiliser ce module, il suffit d’ajouter dans le .pro :

QT += quick1

Et d’inclure les fichiers d’en-têtes :

#include QtQuick1/QDeclarativeView
#include QtQuick1/QDeclarativeItem

Les autres modules

Les modules accessoires

Le support de ces modules n’est pas encore déterminé.

Commentaires et remerciements

Merci à ClaudeLELOUP pour sa relecture orthographique.

Mises a jour