IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Qt 6 est disponible. Cette version est compatible C++ 17
Apporte une nouvelle architecture graphique et s'accompagne du module Qt Quick 3D pour la création de scènes 3D complexes

Le , par Stéphane le calme

120PARTAGES

12  0 
L’équipe responsable du développement de Qt a annoncé la disponibilité de Qt 6. Qt 6.0 est un point de départ pour la prochaine génération de Qt. Il n'est pas encore aussi complet que Qt 5.15, mais l’équipe est persuadée de combler les lacunes dans les mois à venir. Elle estime avoir fait beaucoup de travail important pour poser les bases de la prochaine version de Qt. Beaucoup de ces changements ne seront peut-être pas immédiatement visibles, mais l’équipe croit fermement que ces changements aideront à maintenir Qt compétitif dans les années à venir.

Qt 6.0 prend en charge :
  • Windows 10
  • macOS 10.14 et les versions plus récentes
  • Linux (Ubuntu 20.04, CentOS 8.1, OpenSuSE 15.1)
  • iOS 13 et les versions plus récentes
  • Android (à partir du niveau d'API 23)

Du côté embarqué, Qt 6 prend en charge une large gamme de périphériques embarqués exécutant Linux. Qt 6 ne prend encore en charge aucun des systèmes d'exploitation temps réel embarqués pris en charge dans Qt 5.

Dans un billet de blog, Lars Knoll de Qt a déclaré :

« Qt 5 a été un succès fantastique au fil des ans, et nous avons vu une énorme croissance de notre base d'utilisateurs et de l'utilisation de Qt sur huit ans depuis la sortie de Qt 5.0. Mais le monde a subi des changements importants depuis 2012. L'utilisation de Qt dans les systèmes embarqués a explosé, le C ++ a évolué et de nouvelles API graphiques 3D ont vu le jour. Ce sont des exemples de facteurs qui ont directement affecté Qt.

« En tant que framework multiplateforme, Qt doit s'adapter à ces exigences changeantes. Nous avons réussi à nous adapter très bien à bon nombre de ces exigences pendant la durée de vie de Qt 5. Cependant, le maintien de la pleine compatibilité source et binaire dans la série Qt 5 a rendu certaines choses impossibles à corriger pendant sa durée de vie. Avec Qt 6, nous avons maintenant la possibilité de faire des changements et de construire Qt pour qu'il soit mieux adapté pour les années à venir.

« Ainsi, la mission de Qt 6 est de permettre à Qt d'être la plateforme de productivité du futur. Qt 6.0, en tant que version majeure de Qt, nous a donné un plus grand degré de liberté pour implémenter de nouvelles fonctionnalités et une meilleure prise en charge des besoins d'aujourd'hui et de demain. Qt 6.0 est une continuation de la série Qt 5, et nous nous sommes concentrés sur la non-interruption de la migration pour les utilisateurs.

« Lors de la création de Qt 6, nous nous sommes assurés que les valeurs fondamentales de Qt étaient respectées et respectées, notamment:
  • Sa nature multiplateforme, permettant aux utilisateurs de déployer leurs applications sur toutes les plateformes desktop, mobiles et intégrées en utilisant une technologie et à partir d'une seule base de code.
  • Son évolutivité, des appareils bas de gamme à usage unique aux applications de bureau complexes haut de gamme ou au système connecté.
  • Ses API, ses outils et sa documentation, simplifiant la création d'applications et d'appareils.
  • Sa maintenabilité, sa stabilité et sa compatibilité, permettant aux utilisateurs de maintenir de grandes bases de code avec un minimum d'effort.
  • Son vaste écosystème de développeurs avec plus de 1,5 million d'utilisateurs.

« Qt 6.0 est la première version de la série Qt 6 répondant aux nouvelles demandes du marché tout en gardant les valeurs fondamentales au cœur de ce que nous faisons ».

Passons en revue certaines fonctionnalités.


C++17

« Avec Qt 6, nous avons maintenant besoin d'un compilateur compatible C++ 17 permettant l'utilisation de constructions de langage C++ plus modernes lors du développement de Qt et permettant également des points d'intégration côté API ».

Bibliothèques et API principales

Beaucoup de travail a été consacré à Qt Core, car c'est le module qui implémente les parties les plus centrales de Qt. L'équipe a parcouru de nombreux domaines et apporté des améliorations. En voici quelques-uns :
  • Le nouveau système de propriétés et de liaisons : Ce système apporte désormais le concept de liaisons qui ont contribué au succès de QML dans Qt 5 disponible à partir de C ++.
  • Chaînes et Unicode: Avec Qt 5, l'équipe a commencé à aligner Qt entièrement avec Unicode, où elle a effectué une grande partie du travail.
  • QMetaType et QVariant sont fondamentaux pour le fonctionnement du système de métaobjets Qt. Les signaux et les emplacements ne seraient pas possibles sans QMetaType et QVariant est requis pour les appels dynamiques. Ces deux classes ont été réécrites presque complètement avec Qt 6.

D'autres parties de Qt qui ne sont pas liées aux graphiques ont également subi de grands changements. Par exemple, Qt Concurrent a subi une réécriture presque complète et rend désormais le développement d'applications multithreads plus simple que jamais. Qt Network a connu de nombreux nettoyages et améliorations.

Nouvelle architecture graphique

L'architecture graphique de Qt 5 dépendait beaucoup d'OpenGL en tant qu'API graphique 3D sous-jacente. Alors que c'était la bonne approche en 2012 lorsque Qt 5 a été mis sur pied, le marché a considérablement changé au cours des deux dernières années avec l'introduction de Metal et Vulkan. Il existe désormais un grand ensemble d'API graphiques différentes qui sont couramment utilisées sur différentes plateformes. Pour Qt en tant que framework multiplateforme, cela signifiait bien sûr qu'il fallait s'adapter à la nouvelle réalité du marché ; s'assurer que les utilisateurs puissent exécuter Qt sur chacun d'eux avec des performances maximales.

Ainsi, alors que Qt 5 s'appuyait sur OpenGL pour les graphiques accélérés par le matériel, la donne change complètement avec Qt 6. Tous les graphiques 3D dans Qt Quick sont maintenant construits sur une nouvelle couche d'abstraction pour les graphiques 3D appelée RHI (Rendering Hardware Interface). RHI permet à Qt d'utiliser l'API graphique 3D native du système d'exploitation / plateforme sous-jacent. Ainsi, Qt Quick utilisera désormais Direct3D sous Windows et Metal sous macOS par défaut.

Les classes spécifiques à OpenGL dans Qt existent toujours, mais ont été enlevées de QtGui dans le module QtOpenGL. Qt 6 dispose également d'un nouveau module appelé QtShaderTools pour gérer les différents langages d'ombrage de ces API de manière multiplateforme.


Qt Quick 3D et Qt 3D

Qt Quick 3D est un module relativement nouveau. Il étend de manière transparente Qt Quick avec des capacités 3D. Avec Qt Quick 3D, l'objectif est de créer une API aussi facile à utiliser que les parties existantes de Qt Quick (pour les interfaces utilisateur 2D) tout en offrant un support complet pour la création de scènes 3D complexes. L'objectif principal de cet effort a été de permettre une intégration transparente entre le contenu 2D et 3D.

Ce module a connu des améliorations significatives avec Qt 6 qu'il n'aurait pas été possible de réaliser dans la série Qt 5. Plus important encore, il s'appuie désormais sur la couche d'abstraction RHI pour utiliser de manière optimale l'API graphique et le matériel sous-jacents. De plus, il propose une intégration beaucoup plus profonde et plus performante entre le contenu 2D et 3D, vous permettant de placer des éléments 2D dans une scène 3D. Il a également considérablement amélioré la prise en charge de glTF2 et du rendu basé sur la physique, ce qui simplifie l'importation d'actifs créés dans d'autres outils de conception. Il existe de nombreuses autres améliorations majeures dans le module.

Interfaçage avec des fonctionnalités spécifiques à la plateforme

Bien que Qt offre la plupart des fonctionnalités requises pour développer votre application indépendamment de la plateforme, il est parfois nécessaire de s'interfacer avec des fonctionnalités spécifiques à la plateforme. Dans Qt 5, l'équipe a fourni un ensemble de modules complémentaires (QtX11Extras, QtWinExtras, QtMacExtras) pour vous aider dans ce but. Mais cette séparation complète du reste de Qt a conduit à quelques problèmes architecturaux, d'incohérences et de duplication de code dans Qt. Dans Qt 6, cette approche a été repensée pour simplifier l'interfaçage avec les API spécifiques au système d'exploitation / plateforme.

Source : blog Qt

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de epsilon68
Membre expérimenté https://www.developpez.com
Le 10/12/2020 à 0:22
je pense qu'ils m'ont perdu quand ils ont joué avec la licence...
d'un autre coté, .net core avance tres vite, bientot MAUI pour de l'UI multiplateforme,
donc je regarde encore Qt mais d'un seul oeil ... on sait jamais, mais plus le temps passe moins je regarde...
1  1 
Avatar de der§en
Membre éprouvé https://www.developpez.com
Le 10/12/2020 à 17:13
Moi, j'ai décroché, quand il fallait mettre du javascript pour faire les UI des programmes en C++.

Apparemment, ils sont en train de revenir au "full C++" et je ne dis pas que je ne vais pas y jeter un oeil...
0  0 
Avatar de defZero
Membre extrêmement actif https://www.developpez.com
Le 10/12/2020 à 19:07
@epsilon68, +1. En effet le coups sur le changement de licence leurs a quand même fait mauvaise presse, mais à côté de ça, il n'y a pas de véritable alternatives à part peut-être Delphi, donc l'équipe Qt peut bien se le permettre.

@der§en, Oui, enfin faire du Qt et faire du C++ sont 2 choses différentes.
Je rappellerais qu'entre C et C++ il n'y avait qu'un préprocesseur, alors venir qualifié Qt de "full C++", mouuuais c'est limite.
Quand à l'ajout de JS dans QtQuick, c'est quand même relativement plus facile et compréhensible de décrire ses UI avec des langages de plus au niveau, qui plus est sans avoir à gérer soit même les durées de vie de chaque objets, enfin je trouve personnellement mais ce n'est qu'un avis.

Pour ce qui est de Qt6, c'est une bonne chose qu'ils aient inclus des abstractions plus bas niveau et plus optimisé, mais ça a quand même était pas mal facilité par le fait que les API spécifiques aux plateformes ont de plus en plus tendance à converger dans leurs fonctionnement.
Par exemple pour la 3D, si RHI à été rendue possible, c'est bien parce que DX12, Metal et Vulkan ont bien simplifier la tache je pense (donc merci M$, Apple et Khronos ).
0  0 
Avatar de epsilon68
Membre expérimenté https://www.developpez.com
Le 11/12/2020 à 0:21
ben si il y a d'autres options que Qt:
- d'abord la licence est beaucoup trop chere
- sur desktop C# / WPF ou WinUI
- sur mobile React Native (js) ou Xamarin (C#) ou Flutter (dart)

Après, c'est un choix aussi valide de n'implementer une appli que sur 1 seule plateforme, par exemple C++ / objective C / swift sur ios / macos, ou de developper une couche C pour binder sur du C#

des solutions il y en a pleins en fait, et gratuites.

et rares sont les decideurs qui vont choisir C++, trop verbeux, dur et difficile à mettre en oeuvre.
0  0 
Avatar de Jbx 2.0b
Membre chevronné https://www.developpez.com
Le 11/12/2020 à 9:19
Pour ma part j'ai quand même l'impression qu'ils mettent Qt 3D sous le tapis pour promouvoir Qt Quick 3D. En effet la techno Qt 3D n'est plus disponible qu'en librairie additionnelle, pourquoi ? Et bien sur Qt Quick 3D, c'est GPL et commercial, donc ils ont tout intérêt à la mettre en avant.
Par contrer quand on choisit de monter un projet autour de Qt 3D en misant sur le LGPL, on a de quoi flipper...
0  0 
Avatar de archqt
Membre émérite https://www.developpez.com
Le 13/12/2020 à 14:28
- d'abord la licence est beaucoup trop chere
Exact très chère et à l'année, et tous les composants qui arrivent sont en licence Commercial ou GPL uniquement

- sur desktop C# / WPF ou WinUI
Pour linux, MacOS et Windows ou que sur Windows ? Après les performances C# sont quand même moins bonnes (je ne suis pas un spécialiste)

- sur mobile React Native (js) ou Xamarin (C#) ou Flutter (dart)
Oui mais il faut refaire le code

des solutions il y en a pleins en fait, et gratuites.
Oui mais, hélas, pas aussi abouties que Qt.


et rares sont les decideurs qui vont choisir C++, trop verbeux, dur et difficile à mettre en oeuvre.
Verbeux, pas sûr il faut juste utiliser une sous-couche du C++ (cela s'est bien amélioré par rapport au C++98). De plus avec les outils IHM (QtQuick) on peut faire des animations sans toucher au code de l'IHM. On implémente un "binding" IHM<->données en C++ et les 2 parties sont séparées.
Il n'y a pas, à ma connaissance (à part peut être FireMonkey de C++Builder) d'outils permettant de faire cela. Et bien évidemment les objets QtQuick permettant de faire cela sont sous licence commercial ou GPL.
Sous flutter il y a/avait une application qui permettait directement de faire le code de l'animation.
0  0 
Avatar de epsilon68
Membre expérimenté https://www.developpez.com
Le 13/12/2020 à 16:49
react native permet de faire ios et android et windows ... microsoft a meme sorti une version pour mac ...
flutter dart c'est pareil, c'est possible de faire une appli desktop (en preversion)
Xamarin MAUI c'est pareil

en fait c'est plutot Qt que je ne trouve pas abouti, ils ne resolvent pas les bugs, et point de vue rapidité, tu crois que QtQuick avec une VM javascript est rapide ?

bref, rien ne pourra justifier un tel prix, alors que des alternatives existent. Je mise beaucoup sur C# MAUI
0  0 
Avatar de archqt
Membre émérite https://www.developpez.com
Le 13/12/2020 à 18:15
Oui si on utilise du javascript cela ralenti, par contre le QML est compilé en C++ si l'on veut pour obtenir une pleine vitesse. Et personnellement je mets la logique de l'IHM en C++. Après on est d'accord c'est très très cher.
Les bugs il doit y en avoir comme partout je suppose.
Mais visiblement cela fonctionne dans l'automobile pour l'embarqué sinon ils ne mettraient pas un prix si élevé.

Ce qui est dommage c'est C++ Builder, vu "l'avance" qu'il avait sur les autres IDE dans les années 90 il aurait du être leader.
0  0