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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Qt 6 est disponible et est compatible C++ 17, apporte une nouvelle architecture graphique


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut Qt 6 est disponible et est compatible C++ 17, apporte une nouvelle architecture graphique
    Le Qt Contributors Summit s’est achevé cette semaine. La conférence rassemblait une centaine de contributeurs au projet Qt pour discuter de son avenir. L’un des principaux sujets de discussion a été la prochaine version majeure de Qt 6, la prochaine occasion pour casser la compatibilité du code existant et donc de revisiter certains choix de conception qui ne seraient plus adaptés au développement moderne (ce qui inclut également la liste des fonctionnalités désapprouvées lors de la vie de Qt 5).


    Le premier et principal changement prévu concerne la version de C++ : actuellement, seul C++11 est autorisé, tant pour développer Qt que dans son interface (aux débuts de Qt 5, c’était encore C++98…). Qt 6 se baserait exclusivement sur C++17 (puisque la norme C++20 ne serait probablement pas finalisée à temps).

    Qt 6 n’arrivera pas de sitôt : il faudra au moins attendre après Qt 5.14 (au moins dix-huit mois), c’est-à-dire en 2020.

    Les développeurs gardent en tête les problèmes de portage causés par le passé, afin de minimiser l’impact pour ceux qui devront mettre à jour leur version de Qt. Certaines API pourraient cependant changer pour devenir plus faciles d’utilisation — quitte à perdre légèrement en performance — : pour les utilisateurs, il est plus profitable d’avoir un outil facile à utiliser que plus performant, puisque les applications arriveront plus vite aux utilisateurs (et probablement avec moins de défauts).

    La compatibilité binaire sera aussi probablement cassée, afin de réduire la consommation de mémoire et d’implémenter certains algorithmes plus efficacement.

    Plus dans le détail, quelques modifications déjà prévues :

    • côté accessibilité : pour le moment, toute l’accessibilité (pour décrire l’interface de l’application à des outils comme des synthétiseurs vocaux) se base sur une copie de la hiérarchie des widgets et des composants. Cette manière de procéder est assez coûteuse en ressources et fragile (au moindre écart entre les hiérarchies, l’application peut planter). L’idée serait de fusionner l’interface d’accessibilité avec les widgets, de telle sorte que la hiérarchie ne soit plus dupliquée. Les données correspondant à l’accessibilité ne seraient allouées en mémoire que lorsqu’elles sont requises, ce qui reviendrait à une surcharge en mémoire d’un pointeur dans le cas de base ;

    • côté Qt WebEngine : le code entre l’implémentation à base de widgets et pour Qt Quick présente une certaine quantité de doublons, qui devrait être limitée. Le démarrage et l’arrêt du moteur Web sont actuellement décrits comme des hacks, leur implémentation devrait être améliorée. Plus important, l’API de QWebEnginePage devrait être retravaillée : il ne devrait pas être nécessaire de créer des classes dérivées aussi souvent. QWebEngineCallback devrait disparaître au profit de la bibliothèque standard : std::function. Toutes les classes pourraient finir dans un espace de noms QtWebEngine, au lieu d’avoir un préfixe à rallonge (QWebEngine) ;

    • côté Qt Widgets : certaines parties de l’API ont été placées dans Qt Widgets au lieu du module plus général Qt GUI avec la modularisation de Qt 5, mais leur place est probablement dans Qt GUI. Il s’agirait de QFileSystemModel (un modèle dont les données proviennent d’un système de fichiers) et des fonctionnalités d’annulation-restauration des actions. De même, la classe QSvgWidget aurait plus sa place dans le module Qt SVG ;

    • côté Qt UI Tools : ce module de chargement dynamique d’interfaces (similaire à Qt Designer) a toujours fonctionné comme une bibliothèque statique. Cependant, cette manière de procéder a un impact sur la licence : le module était sous licence BSD ou commerciale. Avec Qt 6, il devrait être possible de l’utiliser comme une bibliothèque partagée : il passera alors sous la même licence que le reste de Qt (LGPL ou commerciale) ;

    • côté style : le même code pourrait être utilisé pour les widgets et Qt Quick, à condition de retirer les dépendances trop fortes envers les widgets ;

    • côté Qt Quick : le moteur de rendu et le graphe de scène pourraient voir de grands changements arriver. L’objectif changera légèrement : le moteur actuel est orienté vers les applications 2D, mais s’ouvrira à l’intégration avec des moteurs 3D (comme Unity), de réalité virtuelle ou augmentée. Qt Quick servirait alors uniquement à la partie interface en 2D, avec l’affichage réalisé dans une texture réutilisée par une autre application. Les changements seraient assez profonds, mais simples : QQuickScene serait le point d’entrée, au lieu de QQuickWindow, qui ne serait dès lors plus nécessaire pour une application Qt Quick. Plus d’API de rendu seraient gérées : OpenGL et le rendu logiciel seront toujours gardés, mais complétés par Direct3D 12, Vulkan et d’autres.


    Voir aussi : la liste des changements déjà proposés pour Qt 6.
    Source : Qt Contributors’ Summit 2018 wrap-up.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    Il y a bien "longtemps" (c'était encore Qt-4.x ) j'avais proposé de rendre QMap plus "compatible" avec std::map, en rajoutant des paramètres template, parce que c'est template <Key, Value> QMap contre template <Key, Value, Comparator=less,Alloc = allocator<pair<const Key,T> >std::map.

    Cela avait été refusé à l'époque parce que cela aurait cassé la compatibilité binaire, ce que j'avais très bien compris. Mais Qt5 n'est sorti que plusieurs années plus tard, et, comme je n'y faisais pas trop attention à l'époque, je n'ai pas pu profiter de l'occasion pour relancer l'idée.

    Crois tu qu'il serait possible de la faire passer avec Qt-6
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut
    Très probablement, oui ! Tu profiterais aussi d'une ouverture plus directe aux nouvelles normes C++ et à la bibliothèque standard, ce qui était moins le cas avec Qt 5.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Très probablement, oui ! Tu profiterais aussi d'une ouverture plus directe aux nouvelles normes C++ et à la bibliothèque standard, ce qui était moins le cas avec Qt 5.
    J'ai donc introduit un rapport de bug pour lequel la réponse a été
    Current thinking is to reimplement QMap and QHash with Standard Library containers. I don't know if we need to define a comparator template parameter, but it doesn't hurt to
    J'ai fait valoir que, dans ce cas, rajouter un parametre template avec une valeur par défaut ne changerait pas grand chose pour l'implémenteur, mais pourrait changer énormément pour l'utilisateur

    Et les grands esprits se rencontrent, car, même si je ne l'ai pas proposé, je m'étais fait la réflexion que la bibliothèque standard avait bien évolué depuis les débuts de Qt, et que, s'il était cohérent de fournir différents conteneurs "perso" à l'époque, la SL a prouvé sa stabilité depuis, si bien que partir sur quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <typename Key, typename Value, typename Comp=less>
    class QMap : private std::map<Key,Value,Comp>{
     
    };
    pour garder le nom du conteneur et pouvoir adapter les quelques fonctions qui divergent (en prenant / renvoyant un int au lieu d'un size_t) faciliterait la tâche
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre très actif Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Par défaut
    Citation Envoyé par koala01 Voir le message
    renvoyant un int au lieu d'un size_t
    Tiens d’ailleurs, pourquoi mon compilation me retourne un warning quand je compare un unsigned int à un size_t ?
    Un size_t n'est pas simplement un #define d'un unsigned int ? Un size_t est bien définie sur 4 octets ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 746
    Par défaut
    Citation Envoyé par Matthieu76 Voir le message
    À mon avis je ne verrais pas vraiment la différence entre QT 5 et Qt 6. Un QPushButton restera un QPushButton.
    Et non Maintenant, on peut faire des connections/ signaux avec des fonctions anonymes.

    Et j'ai lu sur les Internets , que Qt veut remplacer le moteur graphique "QGraphicsView/ QGraphicScene" par du QML/ Qt Quick.
    Et là tu devras séparer la présentation (QML) du code logique (C++)


    Citation Envoyé par Matthieu76 Voir le message
    Un size_t n'est pas simplement un #define d'un unsigned int ?
    Et non Sur des plateformes 64 bits, un type int a une taille de soit 4 soit 8 octets.
    Et le type size_t doit avoir une taille de 8 octets [sur une plateforme 64 bits]*


    Édit : * rajout suite au message ci-dessous de koala01 et effectivement le verbe devoir est trop fort

  7. #7
    Membre très actif Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Par défaut
    J'utilise beaucoup Qt mais je n'utilise que des fonctions simples, à part un peu d'interface du multi-threading, je n'utilise pas grand-chose de Qt. L'interface de mes programmes est utilise Qt mais le back-end n'utilise pas du tout Qt, ne le référence même pas.
    À mon avis je ne verrais pas vraiment la différence entre QT 5 et Qt 6. Un QPushButton restera un QPushButton.

  8. #8
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    9 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 9 365
    Par défaut Qt 6 est disponible et est compatible C++ 17, apporte une nouvelle architecture graphique
    Qt 6 est disponible et 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

    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.

    Nom : qt.png
Affichages : 96449
Taille : 196,6 Ko

    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.

    Nom : graphique.png
Affichages : 8182
Taille : 276,6 Ko

    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    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...

  10. #10
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 000
    Par défaut
    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...

  11. #11
    Membre éclairé
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    Mai 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 429
    Par défaut
    @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 ).

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    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.

  13. #13
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Par défaut
    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...

  14. #14
    Membre éclairé
    Profil pro
    retraité
    Inscrit en
    Décembre 2010
    Messages
    853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 853
    Par défaut
    - 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.

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    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

  16. #16
    Membre éclairé
    Profil pro
    retraité
    Inscrit en
    Décembre 2010
    Messages
    853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 853
    Par défaut
    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.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/03/2011, 00h52
  2. Réponses: 34
    Dernier message: 31/07/2010, 15h53
  3. Réponses: 42
    Dernier message: 26/11/2009, 12h58
  4. GetCursorPos et lnk 2020
    Par christof63 dans le forum C++
    Réponses: 1
    Dernier message: 28/08/2008, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo