I. Introduction

La sortie de Qt 5.0 est la première opportunité depuis 7 ans de casser la compatibilité des sources ainsi qu'au niveau binaire. Ce fut un énorme effort à travers toutes les disciplines, dans tous les domaines. Des discussions à propos du design, de la documentation, de l'infrastructure de développement, de l'administration, de la promotion, des tests et de l'empaquetage ont été conduites.

KDAB a réalisé d'importantes contributions pour finaliser Qt 5.0 et il en est de même pour Qt 5.1. Les contributions de KDAB touchent à tous les aspects du projet, qu'il s'agisse du code, de la documentation, des tests, de l'empaquetage et des tests.

II. Mise à jour d' OpenGL

Sean a déjà posté une série d'articles à propos des changements de l'API autour d'OpenGL dans Qt 5.1. Les nouvelles fonctionnalités d'OpenGL ainsi que de ses extensions dans sa nouvelle version 4.3 publiée par Khronos sont déjà disponibles via les API Qt, qui transforment les erreurs à l'exécution en erreur à la compilation. Ces articles exposent le nombre toujours grandissant de fonctionnalités disponibles pour faire plein usage du processeur graphique. Parmi les plus importantes contributions se trouve l'API QOpenGLDebug qui a été étudiée dans le quatrième article de cette série.

III. Simplicité et flexibilité avec CMake

Il y a eu un travail sans relâche sur les fichiers CMake distribués avec Qt 5.

Un des changements les plus marquants est la possibilité d'utiliser une nouvelle fonctionnalité appelée target usage, disponible avec CMake 2.8.11. Comme expliqué dans la documentation, cela permet aux usagers de Qt 5.1 d'éviter d'avoir à préciser les répertoires d'en-têtes, les constantes définies à la compilation, les drapeaux pour la génération de codes indépendants de la position ou la liaison à la bibliothèque winmain sous Windows. Étant donné que c'est maintenant une fonctionnalité à part entière de CMake, elle est aussi utilisable avec Qt 4.

Les nouvelles fonctionnalités de CMake 2.8.9 rendent maintenant possible la création d'un paquet Qt 5 dit « umbrella » à utiliser avec CMake. Cela veut dire qu'au lieu de chercher chaque module un par un en plusieurs lignes comme ceci :

 
Sélectionnez
find_package(Qt5Widgets) 
find_package(Qt5Xml) 
find_package(Qt5Sql) 
find_package(Qt5Script)

On peut maintenant procéder en une seule ligne avec Qt 5.1 :

 
Sélectionnez
find_package(Qt5 COMPONENTS Widgets Xml Sql Script)

Des diagnostics spécifiques aux modules seront rapportés si l'un d'entre eux venait à ne pas être trouvé.

Il est à noter qu'il est maintenant possible de compiler un projet, soit avec Qt 4, soit avec Qt 5 en utilisant le même système de compilation. Cela est vraiment pratique lorsque l'on désire porter de gros projets, avec plusieurs exécutables ; les fonctionnalités avancées telles que l'AUTOMOC s'intègrent parfaitement dans ce genre de nouveau système. CMake indiquera aussi quand un binaire sera lié à la fois à Qt 4 et Qt 5.

Une correction d'un bogue touchant plusieurs distributions Linux a été apportée. Fedora et consorts ont maintenant un lien symbolique de /lib vers /usr/lib ce qui gêne le calcul relatif des chemins qui reposent sur /bin. Les solutions utilisées à la fois dans la nouvelle mouture de CMake et dans Qt 5.1 sont les mêmes et traitent spécifiquement ce problème lorsque le scénario se présente.

Beaucoup d'autres changements ont été apportés aux fichiers CMake comme de nouveaux tests unitaires et des correctifs résultants de retours reçus lors de l'empaquetage de Qt 5.0 ont été apportés.

IV. Nouveaux modules dans Qt 5.1

Qt 5.1 introduit plusieurs nouveaux modules comme QtX11Extras et QtSensors auxquels KDAB a activement contribué. QtX11Extras remplace l'ancien module QX11Info de Qt 4. Étant donné que Qt 5 cherche à réduire le code spécifique à une plate-forme en son coœur, cela a dû être déplacé dans un module à part. Dans le module QtSensors fut implémenté par KDAB une API permettant aux appareils Blackberry de fonctionner avec Qt 5.

V. Mises à jour incrémentales

Le widget QTreeView peut maintenant faire usage du nouveau drapeau Qt::ItemNeverHasChildren pour les items dans l'arbre. Cela montre à quel point l'implémentation du QAbstractItemModel peut permettre une amélioration des performances. Les artefacts visuels concernant les barres de défilement et les items dans la barre des tâches ont été corrigés sous OS X.

Concernant la réunification des classes QPointer et QWeakPointer pour le suivi des QObject, un correctif a été nécessaire permettant de corriger le cas des arguments templates constants.

Une autre amélioration au niveau de l'enregistrement automatique des métatypes, commencée avec Qt 5.0, a été étendue avec Qt 5.1 pour inclure les paramètres de méthodes utilisées avec QSignalSpy.

VI. Remerciements

Au nom de toute l'équipe Qt, j'aimerais adresser le plus grand remerciement à KDAB pour nous avoir autorisés à traduire cet article !

Je tiens à remercier Thibaut Cuvelier pour ses conseils et zoom61 pour sa relecture.