LinuxFR
En cours de rédaction...

NewsLinuxFr > Sortie de Qt 4.7 - [ cliquer pour soumission sur LinuxFr ]

scoop Qt 4.7


Sortie de Qt 4.7

Qt 4.7, la bibliothèque C++ libre (GNU LGPL) et multi-plateformes de Nokia vient de sortir. Le principal ajout de cette version est Quick (pour Qt UI Creation Kit), qui facilite la réalisation d'interfaces utilisateur plus dynamique. Cette nouvelle façon de réaliser les interfaces devrait principalement intéresser l'embarqué, même si elle ne se limite pas à cela (les technologies Quick sont notamment utilisées dans les Plasmoïdes du projet KDE).

Comme à l'accoutumée, Qt Creator, l'environnement de développement pour Qt voit également son numéro de version incrémenté et arriver à la version 2.0. Et cela principalement en raison du support de Quick.

La suite de cette dépêche abordera les nouveauté de Qt 4.7 bien évidemment, mais aussi plusieurs projets en cours chez Nokia et qui feront vraisemblablement leur entrée dans les prochaines versions de Qt.

liens

http://doc.trolltech.com/4.7/ La documentation officielle
http://doc.trolltech.com/4.7/qt4-7-intro.html Les nouveautés de cette version
http://qt.nokia.com/developer/changes/changes-4.7.0 Le journal des modifications
http://qt.nokia.com/products/appdev/developer-tools/developer-tools Qt Creator
http://fr.wikipedia.org/wiki/Qt Qt sur Wikipédia
http://qt.nokia.com/ Site de la bibliothèque Qt

corps de la dépêche


Qt, c'est quoi?

Qt est une bibliothèques multi-plateformes couvrant un très large spectre de cas d'utilisation. Bibliothèque majeure dans le monde du logiciel libre (elle sert notamment de base à KDE), elle est également couramment utilisé dans le milieu du logiciel propriétaire (Adobe, Google, Opera, etc...). En plus de permettre de développer simplement des applications graphiques portables, elle permet également de faire (liste non exhaustive) :

Un des points forts (mais pour certains c'est une critique) de Qt est le MOC, un préprocesseur de code C++ qui permet à l'aide de macros d'étendre le langage C++ en fournissant des mécanismes d'introspection et surtout une architecture de signaux (des évènements) et slots (des actions à réaliser suite à ces évènements) facilitant grandement le dialogue entre les différents objets C++ d'une application.

Qt ne se limite pas au C++ (bien que cela soit le langage de prédilection et le seul officiellement pris en charge depuis l'arrêt de QtJambi? pour Java) car plusieurs bindings existent : Python, Java, C# et quelques autres moins avancés.

Quick

Quick (pour Qt UI Creation Kit) est l'aboutissement de presque deux ans de travail sur QML et les technologies associées. Il permet de créer facilement des interfaces dynamiques et plus en accord avec ce qui se fait actuellement sur les smartphones, ce qui n'est pas facilement réalisable avec Qt Designer.

Autres choses dans Qt 4.7

L'amélioration continuelles des performances est un point qui a toujours été très présent à chaque version de Qt. Cette version n'échappe à la règle et Nokia annonce même qu'une équipe spécifique est en place.

WebKit?, le moteur de rendu derrière Safari est intégré depuis la version 4.4 de Qt et est régulièrement synchronisé avec la version de développement. C'est ainsi que Qt 4.8 profite de la WebKit2? qui est sortie en avril 2010 et offre notamment une meilleur séparation des différentes tâches (HTML, JavaScript?, rendue, etc...) au sein d'un processus spécifique. Cette séparation vise à rendre plus robuste le moteur, y compris au niveau de la sécurité.

Le statut de la connexion au réseau (actif ou non), ainsi que le type (Ethernet, Wifi, Bluetooth ou encore 3G), peut maintenant être récupéré via le module QtNetwork?.

La version Mac de Qt utilise maintenant par défaut l'API Cocoa en lieu et place de Carbon. Cette dernière ne sera plus supporté dans Qt 4.8 [ http://labs.trolltech.com/blogs/2010/05/06/qt-470-beta1/ ].

QtCreator?

QtCreator? arrive dans sa seconde version majeure et l'intégration de Quick est la principale cause de cette nouvelle version. Mais ce n'est pas la seule amélioration. L'aspect multi-plateforme de Qt à partir d'un même code est largement mis en avant par Nokia. L'interface de QtCreator? est revu pour facilité la génération de plusieurs binaires pour des cibles différentes.

QtMobility?

Qt Mobility est une collection de classes destinées principalement (mais pas que) aux smartphones et couvrent notamment les cas d'utilisation suivant :

Qt Mobility avait été annoncé du temps de la sortie de Qt 4.6 et Nokia avait communiqué durant l'élaboration de l'API pour avoir des retours de la communauté. La version 1.0 est maintenant disponible sous forme d'extension et sera certainement intégré à la prochaine versions majeures de Qt [ http://labs.trolltech.com/blogs/2010/04/27/qt-mobility-100-package/ ] [ https://qt.nokia.com/products/appdev/add-on-products/catalog/4/new-qt-apis/mobility ].

La partie multimedia reste au stade de la bêta, même si l'API est assez stable et qu'un manque de Qt concernant l'acquisition audio est comblé [ http://labs.trolltech.com/blogs/2010/05/18/qtmultimedia-in-action-a-spectrum-analyser/ ] [ http://labs.trolltech.com/blogs/2010/05/10/low-level-audio-processing-with-qtmultimedia/ ].

QtOpenCL? et accélération matérielle

OpenCL? est une API du Khronos Group (qui est notamment en charge de l'évolution d'OpenGL?) et initialement développée par Apple, visant à permettre d'utiliser la puissance de calcul offerte par les GPU (les processeurs graphiques). Il est particulièrement intéressant d'utiliser ces processeurs car ils sont spécialement conçu pour offrir de meilleures performances que les CPU dans le domaine de la 2D et 3D. Nokia c'est donc penchée sur la possibilité de permettre au développeur d'utiliser OpenCL? au sein d'un projet Qt, mais également d'utiliser cette puissance de calcul au sein même de Qt, pour améliorer les capacités graphiques de ce dernier. Quelques démonstrations de faisabilité ont été présentés et les gains semblent très intéressant sur un ordinateur personnel (de 5 fps à 120 fps) et un peu moins intéressante sur l'embarqué (de 10 fps à 60 fps) en raison du fait que les processeurs ARM (qui sont largement utilisés dans les mobiles) offrent déjà une accélération pour certaines opérations graphiques [ http://labs.trolltech.com/blogs/2010/04/07/using-opencl-with-qt/ ].

L'utilisation de l'accélération matérielle pour certaines parties de Qt sont déjà bien avancés, c'est ainsi que les animations CSS et les transformations 3D dans Qt Webkit pourront en profiter dans le futur [ http://labs.trolltech.com/blogs/2010/05/17/qtwebkit-now-accelerates-css-animations-3d-transforms/ ].

Plus de modularité pour Qt 4.8

Durant le développement de Qt 4.7, les développeurs du framework semble avoir pris conscience que Qt n'est pas assez modulaire et que cela a posé des problèmes de cohérence lors de la sortie de la version 4.7. Cela a notamment aboutit au retrait du module QtMultimedia? de QtMobility? 1.0, pour le laisser en bêta. Les développeurs ont d'ors et déjà annoncé que la modularisation de Qt est un objectif de Qt 4.8 [ http://labs.trolltech.com/blogs/2010/05/06/qt-47-scope-change-regarding-qt-multimedia/ ].
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]