Developpez.com - Rubrique Qt

Le Club des Développeurs et IT Pro

Qt 6 commence à émerger sur Git

Les règles de branchement sont actuellement discutées pendant la transition vers CMake

Le 2019-01-25 21:35:46, par dourouc05, Responsable Qt & Livres
vraisemblablement pas prévu avant 2020. Il n'empêche que les développeurs commencent à s'activer pour cette version 6, avec des changements prévus qui s'accumulent — mais qui ne peuvent pas être intégrés dans Qt 5, à cause d'un problème de compatibilité binaire ou des sources. Par exemple, certains souhaitent ne plus laisser un accès direct aux données de QLabel par la méthode pixmap() : elle renvoie un pointeur sur les données internes de l'objet QLabel, alors qu'il serait possible de retourner directement les valeurs nécessaires (sans risque que le code extérieur manipule l'état du QLabel).
Les plans au niveau du branchement dans le dépôt Git sont les suivants. Qt 6 disposerait de sa propre branche de développement, en parallèle de celle de Qt 5. Chacune aurait un développement actif et indépendant ; cependant, les changements apportés à Qt 5 seraient régulièrement fusionnés dans la branche Qt 6. Ceci ne serait valable que pour les modules développés dans le dépôt qtbase.git, pour des raisons liées au système d'intégration continue — bien évidemment, le travail continue de ce côté pour éliminer cette restriction.
Pour limiter la casse lors de la mise à jour du code utilisateur vers Qt 6, les fonctions qui seront supprimées dans Qt 6 devront impérativement avoir été marquées comme désapprouvées dans une version de Qt 5. Aucun changement ne sera permis au niveau du système de compilation, sauf en ce qui concerne la migration complète vers CMake. Ce point est d'ailleurs bloquant pour le moment au niveau de l'intégration continue.
Source : Qt 6 To Begin Early Stages Of Development In Git.
  Discussion forum
24 commentaires
  • dourouc05
    Responsable Qt & Livres
    Qt vise aussi pas mal de plateformes embarquées, dont les compilateurs ont souvent du mal à suivre l'évolution de la norme C++… Il n'est d'ailleurs pas sûr que les compilateurs implémentent vraiment la norme C++2020 sans trop de défauts d'ici à Qt 6. Je trouve, au contraire, ce choix assez bien réfléchi — en espérant qu'ils se permettront de passer à une version plus récente de C++ dans le cycle de vie de Qt 6.
  • Matthieu76
    Membre éclairé
    Qt 6 ne sera pas basé sur C++ 2020 ? C'est vraiment dommage.
  • epsilon68
    Membre expérimenté
    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...
  • der§en
    Membre éprouvé
    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...
  • defZero
    Membre extrêmement actif
    @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 ).
  • epsilon68
    Membre expérimenté
    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.
  • Jbx 2.0b
    Membre chevronné
    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...
  • archqt
    Membre émérite
    - 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.
  • epsilon68
    Membre expérimenté
    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
  • archqt
    Membre émérite
    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.