Cet article est issu en grande partie de la traduction de l'annonce sur le blog Qt.
Ce mardi 26 mai 2020 est sortie la version 5.15 LTS de Qt.
Celle-ci marque la dernière version LTS d’une durée de support élargie à 3 ans open source, c’est-à-dire la dernière version disponible pour tous sauf si vous disposez d’une licence commerciale ceci dans le but d’aider la Qt Company à valoriser et à monétiser son Framework.
Elle marque le changement de politique envers la communauté open source puisque seuls ceux disposant d’une licence auront les mises à jour correctives suivantes.
Cette version est bien sûr rétrocompatible avec les versions précédentes. Avec une longue liste de correction de bugs la plaçant comme la version la plus stable à ce jour. Dans le but de préparer le futur.
C’est également la dernière version mineure de Qt 5 (sauf changement de dernière minute) puisque d’ici la fin de l’année est prévue la sortie de Qt 6.
En effet, cette version est le tremplin vers Qt6 qui va apporter des changements plus profonds dans le cœur du Framework au risque de casser la comptabilité, mais de manière moins brutale que la transition entre Qt 4 et Qt 5.
Pour aider cette douce transition : le projet Qt va taguer les fonctionnalités comme étant obsolète (depreciated) dans cette version pour donner du temps aux développeurs de migrer vers Qt 6.
Tout en étant une version de transition, cette Qt 5.15 LTS apporte également son lot de fonctionnalités.
• L’abstraction de l’API 3D
Les changements les plus importants se sont probablement produits du côté graphique. Beaucoup de changements sont « sous le capot » et ne sont pas immédiatement visibles pour les utilisateurs. Depuis un an, le travail se fait sur une refonte complète de l'architecture de la pile graphique. Cette mise à niveau deviendra centrale dans Qt 6, mais est déjà disponible dans Qt 5.15 en tant qu'opt-in.
La pile graphique dans Qt 5 a été construite autour de l'hypothèse qu’OpenGL sera utilisée comme API multiplateforme pour les graphiques 3D. Au cours des deux dernières années, des changements importants dans l'industrie ont compliqué le développement et le déploiement d'applications utilisant des graphiques 3D. Apple a commencé à travailler sur Metal et a déconseillé la prise en charge d'OpenGL sur macOS et iOS il y a quelque temps. Le groupe Khronos a travaillé sur le remplacement d'OpenGL par Vulkan, qui fait son chemin vers Android et Linux. Direct 3D 12 de Microsoft est une API entièrement réécrite et n'est pas du tout compatible avec les anciennes versions de Direct 3D. En même temps, OpenGL ne disparaîtra pas avant longtemps.
Avec la promesse multiplateforme de Qt, les développeurs voulaient une solution qui fonctionne partout. Pour y parvenir, ils ont commencé à travailler sur une couche d'abstraction pour toutes ces différentes API il y a un peu plus d'un an. Elle s'appelle Qt Rendering Hardware Interface (RHI) et peut être utilisée pour exécuter des applications Qt Quick en plus de Direct 3D, Metal et Vulkan ainsi qu'OpenGL. Il est pris en charge en tant qu'aperçu technologique dans Qt 5.15, vous pouvez choisir d'utiliser Qt RHI en l'activant via une variable d'environnement. Dans Qt 6, cette couche formera une partie très centrale de l'architecture de Qt. Pour plus de détails sur le RHI, veuillez consulter les articles de blog de Laszlo (ici, ici et ici) sur le sujet.
• Qt Quick 3D
Une autre nouvelle fonctionnalité importante de Qt 5.15 est également liée aux graphiques. À la base dans Qt 5.0, Qt Quick a été introduit comme pierre angulaire de l'architecture de Qt. Son objectif était de simplifier la création d'interfaces utilisateur 2D animées et tactiles.
Aujourd'hui, Qt 5.15 est livré avec un Qt Quick 3D entièrement pris en charge, qui étend le concept de faciliter l’utilisation et l'intégration de contenu 3D dans des applications basées sur Qt Quick.
Avec Qt Quick 3D, vous pouvez désormais facilement définir une scène 3D en QML, définir vos maillages, lumières et matériaux et tout combiner de manière transparente avec votre interface utilisateur 2D.
Là où vous deviez développer les éléments 2D et 3D séparément en utilisant différentes technologies (en utilisant Qt 3D, Qt 3D Studio ou OpenGL brut), vous avez maintenant une solution intégrée à portée de main.
Une démonstration a été développée où vous pouvez tester les différentes fonctionnalités de Qt Quick 3D 5.15, comme changer le type et le nombre de lumières, la complexité et le nombre du modèle, la taille de la texture, les matériaux et la méthode et la qualité d'anti-aliasing, entre autres choses. De cette façon, vous pouvez rapidement tester si, par exemple, le nombre de modèles dessinés a plus d'effet sur les performances de leur matériel que le nombre de triangles dans un modèle. Exemple sur cette démonstration vidéo :
Qt Quick 3D a été introduit en tant qu'aperçu technologique dans Qt 5.14. La version entièrement prise en charge de Qt 5.15 utilise de nombreuses fonctionnalités supplémentaires telles que la prise en charge des effets de post-traitement, une nouvelle API C++ pour la géométrie personnalisée, une API basée sur les quaternions pour les rotations et la prise en charge des projecteurs. Vous pouvez désormais utiliser plus facilement Qt Quick 2D à l'intérieur d'une scène 3D et ceci avec des performances globales plus élevées grâce à une grande quantité de travail en coulisses.
Voir : la conférence d'Andy du Qt Virtual Tech Con pour plus de détails.
• Qt Design Studio
Qt Quick 3D ajoute une énorme quantité d'options pour créer de nouvelles applications intéressantes qui incluent des éléments 2D et 3D dans l'interface utilisateur. Comme vous le savez peut-être, nous avons consacré beaucoup de temps à mettre toutes ces fonctionnalités à la disposition des concepteurs via Qt Design Studio. Pour cette raison, je suis extrêmement heureux de vous faire savoir que toutes les fonctionnalités de Qt Quick 3D sont également prises en charge dans Qt Design Studio 1.5 que nous avons également publié aujourd'hui. Veuillez consulter le billet de blog séparé sur Qt Design Studio pour plus de détails.
• Qt QML
Avec Qt QML, nous nous sommes concentrés sur la préparation de Qt 6, ce qui a conduit à un ensemble utile de nouvelles fonctionnalités dans Qt 5.15.
QML a désormais le concept de propriétés «requises» pour les composants. Ce sont des propriétés qui doivent être définies par un utilisateur du composant. Les composants peuvent désormais être spécifiés en ligne dans un fichier QML. Une nouvelle façon déclarative d'enregistrer les types a été ajoutée.
L'outil qmllint a été amélioré. Il donne de bien meilleurs avertissements sur les problèmes possibles dans la base de code QML.
De plus, un nouvel outil qmlformat a été ajouté qui peut aider à formater les fichiers QML conformément aux directives de style de codage QML standard.
Enfin, un travail a été fait dans le but d’assurer que QML utilisé dans Qt pour MCU et Qt 5.15 soit compatible.
• Qt Quick
Quelques nouvelles fonctionnalités sont également apparues dans Qt Quick. Nous avons ajouté la prise en charge des espaces colorimétriques à l'élément Image et ajouté un nouvel élément PathText aux formes rapides Qt. Les pointer handlers (ou gestionnaires de pointeurs) ont une nouvelle propriété cursorShape pour définir la forme du curseur de la souris sur les systèmes de bureau, et un nouvel élément HeaderView facilite l'ajout d'en-têtes horizontaux ou verticaux à un TableView.
• Autres
o Qt Web Engine : mise à jour de la version Chromium 77 (Qt 5.14) à Chromium 80 (Qt 5.15).
o Qt 3D ayant un meilleur support du profiling et de debugging entre autres.
o Qt Multimedia supporte désormais le rendu en multi surfaces. Dans Qt GUI, l’image scaling et les routines de conversion sont majoritairement multithreadés dans la plupart des cas.
o Qt Network supporte maintenant la norme TLS 1.3 avec la gestion des sessions et une configuration des timeouts.
o Qt Core : QRunnable et QthreadPool peuvent désormais fonctionner ensemble avec std::function et une nouvelle méthode QFile ::moveTotrash() qui sont cross platform.
o Enfin le support natif du système de fichier Android a été ajouté.
Cette version a un support de trois ans pour tous les utilisateurs, autant pour les développeurs dits open source que ceux ayant une licence commerciale jusqu’à la fin soit en mai 2023.
Le plan de développement pour cette version : https://wiki.qt.io/Qt_5.15_Release.
À partir de la version Qt 6, des changements sur ces LTS seront appliqués et seuls les utilisateurs avec une licence commerciale auront droit à ce support.
Pour télécharger Qt, il est désormais nécessaire d’avoir un compte Qt pour obtenir l’installateur en ligne et télécharger n’importe quelle version du framework.
À noter que le support de Qt 5.9 LTS arrivera à terme le 31 mai 2020.
Télécharger la version open source avec l’installateur en ligne
Source : Blog Qt
Et vous ?
Comptez-vous continuer à utiliser le Framework suite aux changements unilatéraux de la Qt Company ?
Que pensez-vous des alternatives telles que Copperspice ou de Verdigris ?
Gtk 4.0 avec son vent de fraîcheur (nouveau site web, nouvelle API cassante avec gtk 3, etc.) est prévu pour sortir également en fin d’année. Cela sera-t-il également un élément qui influencera l’écosystème et la communauté Qt ?