Qt 5 disponible en version finale : le plein de nouveautés

Qt 5 disponible en version finale : le plein de nouveautés

Première version majeure depuis le rachat par Digia

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

21/12/2012 3 minutes
58

Qt 5 disponible en version finale : le plein de nouveautés

L’environnement Qt, racheté par Digia à Nokia, subit une évolution majeure avec l’arrivée de la version 5.0. De nombreuses nouveautés sont au programme ainsi qu’une hausse des performances dans plusieurs cas.

qt5

 

Qt est pour rappel un environnement de développement multiplateforme. L’objectif est simple : permettre aux développeurs d’écrire un code qui pourra ensuite être utilisé de la même manière sur l’ensemble des systèmes d’exploitation. On pourrait ainsi citer les cas connus de VirtualBox d’Oracle ou encore de VLC.

 

La nouvelle version 5.0 apporte de nombreux nouveaux éléments, certains particulièrement importants. Qt Quick par exemple, qui permet la création d’interfaces utilisateur personnalisables, gère désormais pleinement l’OpenGL. Cela signifie pour les développeurs de nouvelles possibilités dans l’utilisation des effets ou l’intégration de contenus 3D. Sont également présents un système de gestion des particules ainsi qu’une collection d’effets shader préconstruits.


Digia annonce également que le moteur QML a été très largement amélioré et que la version 11 du C++ est supportée. La présence de QTWebKit 2 permettra de son côté aux développeurs de manier le HTML5. En outre, Qt 5 doit apporter une nette amélioration des performances, en particulier sur les équipements dont les ressources sont limitées. L’entreprise cite le cas des smartphones, des tablettes et des plateformes de développement telles que le Pi de Raspberry.

 

 

La vidéo ci-dessus présente globalement les nouveautés de Qt 5 et a d’ailleurs été réalisée entièrement avec les technologies de ce dernier pour en faire une démonstration.

 

L’éditeur précise en outre que le travail de modularisation de Qt a porté ses fruits. L’environnement se découpe désormais en un nombre d’éléments dits « essentiels » accompagnés par un lot de plug-ins qui sont, eux, optionnels. Moins les plug-ins seront nécessaires au développeur, plus le poids de son application sera réduit.

 

Enfin, la migration pour les applications actuelles est censée être simplifiée. Selon Digia, une simple recompilation doit suffire. Notez qu’il s’agit de la première version majeure de Qt depuis le rachat de la technologie.

 

Les développeurs intéressés pourront récupérer Qt 5 depuis le site officiel. La version commerciale peut être essayée pendant 30 jours gratuitement. Qt 5 est compatible avec Windows, OS X et Linux côté ordinateurs, ainsi que Linux et Windows Embedded pour les équipements embarqués classiques, ou VxWorks, Neutrino et INTEGRITY pour les systèmes temps réel embarqués. La compatibilité Android et iOS sera ajoutée par la suite.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Fermer

Commentaires (58)


Qt comme Quicktime ou aucun rapport ?








tAran a écrit :



Qt comme Quicktime ou aucun rapport ?





Aucun rapport <img data-src=" />









tAran a écrit :



QT comme Quicktime ou aucun rapport ?







Qt comme cute :)



Quid des performances sur Android ou iOS ? J’ai un peu du mal à imaginer le truc :/








Gilthoniel a écrit :



Quid des performances sur Android ou iOS ?







La compatibilité Android et iOS sera ajoutée par la suite.









Gilthoniel a écrit :



J’ai un peu du mal à imaginer le truc :/





Ben y’a rien de spécial à imaginer, l’ensemble n’a rien de spécialement lourd (ni léger) par rapport à leurs équivalents.

C’est surtout vrai depuis que l’accent a été mis sur la modularisation du framework (ça a commencé depuis Qt 3), qui était peut-être LE souci qui pouvait perdurer quand on évoquait l’embarqué.



A noter que l’abstraction de la couche de rendu ‘basse’ dans Qt5 (grosso modo comment on attaque le framebuffer) est sans doute ce qui manquait le plus pour le portage vers de nouveaux devices.



Faudrait que j’me documente, comme l’API est en java, la conversion C++/Java, et je suis loin d’être un expert, c’est là que je suis un peu perdu <img data-src=" />.



Merci de ta réponse








Gilthoniel a écrit :



Quid des performances sur Android ou iOS ? J’ai un peu du mal à imaginer le truc :/





Nulles pour l’instant





La compatibilité Android et iOS sera ajoutée par la suite





Edit : bbq



Est-ce qu’il y a un site ou on peut comparer Qt et wxWidgets ?








Gilthoniel a écrit :



Faudrait que j’me documente, comme l’API est en java





Qt est en C++, pas Java.



Et si tu penses à Android, ce dernier permet les libs en natif, donc le jour où Qt sera porté sur cette archi, nul doute qu’il sera proposé en natif.









vida18 a écrit :



Est-ce qu’il y a un site ou on peut comparer Qt et wxWidgets ?





Y’a bien des sites pour comparer des princes et des grenouilles. <img data-src=" />



Plus sérieusement, Qt n’est pas qu’une librairie pour fournir quelques widgets graphiques pour monter des IHM d’applis desktop, c’est beaucoup beaucoup plus que ça. On peut parfaitement utiliser Qt pour faire un démon de serveur cross platform par exemple (j’en ai déjà fait dans un contexte pro).



Donc ça va être difficilement comparable à WxWidget qui -lui- est spécialisé là dedans uniquement puisque c’est uen ‘lib pour faire des GUI’.









brazomyna a écrit :



Qt est en C++, pas Java.



Et si tu penses à Android, ce dernier permet les libs en natif, donc le jour où Qt sera porté sur cette archi, nul doute qu’il sera proposé en natif.







Oui je pensais à Android. Oki merci, je comprends mieux <img data-src=" />



brazomyna a écrit





Plus sérieusement, Qt n’est pas qu’une librairie pour fournir quelques widgets graphiques pour monter des IHM d’applis desktop, c’est beaucoup beaucoup plus que ça. On peut parfaitement utiliser Qt pour faire un démon de serveur cross platform par exemple (j’en ai déjà fait dans un contexte pro).



Donc ça va être difficilement comparable à WxWidget qui -lui- est spécialisé là dedans uniquement puisque c’est une ‘lib pour faire des GUI’.





Je sais. Il y a un projet qui vise à ce que Audacity utilise Qt à la place de wxWidgets et ce n’est pas évident.


Ceux qui bossait sur le projet Necessitas (port de Qt sur Android) travaillent maintenant pour Digia et contribue à Qt Project.




La version commerciale peut être essayée pendant 30 jours gratuitement.





Quelles sont les modalités de la licence SVP ?



Quand j’ai fait mon choix de toolkit graphique (en 2006-2007), j’avais été séduit par Qt qui offrait un très grand choix de composants mais rebuté par sa licence qui - à l’époque - était assez restrictive, et j’avais choisi WxWidgets au final.


Parfaite nouvelle ! J’ai commencé à dev grâce à Qt … Aujourd’hui j’ai mon boulot grâce à Qt <img data-src=" />








JeremyF a écrit :



Aucun rapport <img data-src=" />









Ewil a écrit :



Qt comme cute :)





Merci de l’info <img data-src=" />









IAmNotANumber a écrit :



Quelles sont les modalités de la licence SVP ?



Quand j’ai fait mon choix de toolkit graphique (en 2006-2007), j’avais été séduit par Qt qui offrait un très grand choix de composants mais rebuté par sa licence qui - à l’époque - était assez restrictive, et j’avais choisi WxWidgets au final.







Qt est en LGPL depuis 2008.



Sinon le portage de mon appli de Qt 4.8 at Qt 5 a nécessité quelques adaptations (quelques classes ont disparus et des fonctions ont été déplacés) mais rien de bien méchant. Par contre il faut souligner que sur Windows, OpenGL a été abandonné au profit de OpenGL ES, en ce qui me concerne j’ai du réécrire intégralement la partie OpenGL de mon code du coup (d’autant que certaines features d’OpenGL n’ont pas d’equivalent en GL ES).

Sinon sous Windows il n’y a plus de version MinGW, et toujours pas de version 64bit, mais ca devrait théoriquement venir avec Qt 5.0.1.



IAmNotANumber a écrit :





Quelles sont les modalités de la licence SVP ?



Quand j’ai fait mon choix de toolkit graphique (en 2006-2007), j’avais été séduit par Qt qui offrait un très grand choix de composants mais rebuté par sa licence qui - à l’époque - était assez restrictive, et j’avais choisi WxWidgets au final.





Au pire, Qt est sous licence LGPLv2 depuis la version 4.5 ce qui fait qu’on peut l’utiliser dans un logiciel propriétaire. Cela veux dire que tu peux utiliser Qt dans un logiciel propriétaire sans avoir à payer la licence commercial (sans avoir le support/service, les Qt solutions et la possibilité de linker Qt statiquement)








vida18 a écrit :



Est-ce qu’il y a un site ou on peut comparer Qt et wxWidgets ?





Qt &gt;&gt;&gt;&gt;&gt; wsWidgets et à tous les autres frameworks UI dispos pour C++.

C’est aussi simple que ça et pas seulement à cause de son périmètre beaucoup plus étendu qu’une simple API pour l’UI.



Bien foutu, riche en fonctionnalités, performant, etc. Ton meilleur ami si tu codes en C++.









HarmattanBlow a écrit :



Qt &gt;&gt;&gt;&gt;&gt; wxWidgets et à tous les autres frameworks UI dispos pour C++.





<img data-src=" />



Et dans la même lignée de comparaisons merdiques, on a: le cafard est plus fort que la drosophile quelles que soient les circonstances



Un contre exemple: prends un matos embarqué avec du MIPS à 200MHz, 32Mo de RAM qui tourne sur un linux, Qt ne daignera même pas s’initialiser. Une alternative comme EFL, si. Et tournera plutôt bien aussi. Donc EFL &gt;&gt;&gt;&gt;&gt; Qt ?






Qt est intéressant car il permet de s’abstraire de l’OS au point de vue:




  • graphique (comme wxWidgets),

  • réseau (je n’ai eu que des emmerdes en 2007 avec wxWidgets)

  • …..



    Après c’est chacun ses choix, moi en ce moment c’est la STL + Boost + wxWidgets 2.9 (uniquement pour la GUI)








brazomyna a écrit :



<img data-src=" />



Et dans la même lignée de comparaisons merdiques, on a: le cafard est plus fort que la drosophile quelles que soient les circonstances



Un contre exemple: prends un matos embarqué avec du MIPS à 200MHz, 32Mo de RAM qui tourne sur un linux, Qt ne daignera même pas s’initialiser. Une alternative comme EFL, si. Et tournera plutôt bien aussi. Donc EFL &gt;&gt;&gt;&gt;&gt; Qt ?







Qt tourne aussi très bien sur des systèmes embarqué avec très peu de ressource:

https://www.youtube.com/watch?feature=player_detailpage&v=jRQTzrsNeVk#t=350s



y compris sur du linux embarqué:

http://qt.digia.com/Product/Supported-Platforms/Support-for-Embedded-Linux/









brazomyna a écrit :



<img data-src=" />



Et dans la même lignée de comparaisons merdiques, on a: le cafard est plus fort que la drosophile quelles que soient les circonstances



Un contre exemple: prends un matos embarqué avec du MIPS à 200MHz, 32Mo de RAM qui tourne sur un linux, Qt ne daignera même pas s’initialiser. Une alternative comme EFL, si. Et tournera plutôt bien aussi. Donc EFL &gt;&gt;&gt;&gt;&gt; Qt ?





T’as pas vu QTmoko sur le freeruner? Ce qui est fait avec 128mo de ram, un cpu tout pourri sans float, un gpu poussif et le tout de manière vraiment fluide? <img data-src=" /> Faut voir ce qu’on compte faire. ;)



J’ai été embauche aux US parce que je connaissais Qt et j’etais au Qt DevDays 2012 au début du mois de Decembre.



La difficulte pour Qt sur Android est la mise en place des libraries dans le systeme.

Necessitas utilise un launcher qui s’appelle Ministro et qt va verifier si les lib Qt sont la ou pas et va les d/l le cas echeant. le probleme est que ca la fout mal de lancer une appli et d’avoir un autre truc qui demande de d/l des lib avant de lancer l’appli



je ne sais pas encore comment ils vont résoudre ca sans qu’on ai a embarquer les lib dans l’appli (et hop 30Mo l’appli).



Tout les système embarque sur lesquel on dev sont sous Qt, (Frigo, machine a laver), tout mes projet perso sont fait avec Qt (prise de tete en moins).



Je ne sais pas si j’arriverais un jours a me réadapter a un environnement non Qt.



Quand je vois des gens utiliser des librairies multiples comme wxWidgets, Boost, etc.. et l’idée d’avoir ca en multiplateforme (Win/OSX/Linux), ca me donne mal au crane.


Vu qu’il y a des connaisseurs, est-ce que QT vous semble intéressant pour faire une appli qui doit tourner sur des NAS type QNAP/Syno etc… ?


tout depend du NAS, tout depend de l’appli.



Un Nas c’est juste une linux box custom dans un beau package facile a utiliser.

En general les constructeurs fournissent un SDK pour integrer des app dans leur interface/system. (je crois que c’est le cas pour syno)



Vu que les librairies Qt ne sont pas installe d’office avec un système, il faut souvent installer (sauf si tu as une licence commercial pour les compiler en statique dans ton app), ce qui veut dire qu’il te faut un accès a un terminal en root sur la machine et a ce niveau la on retombe sur de l’environnement embarque classique.




  • si processeur ARM, cross-compilation des libraires.

  • dans le cas d’un NAS, ne pas pourrir le système.



    Dans le cas d’un soft console (daemon par ex).

    Il n’y a rien que tu puisse faire sur Qt que tu ne puisse pas faire avec la STL, Qt te fais simplement gagner du temps sur le dev et les bug (genre la gestion UTF-8) et fournit une interface standardise (qt-creator) avec l’ensemble de la team de dev.



    le fait que Qt soit intéressant est purement subjectif, question d’habitude (y en a qui prefere .net et C#).

    Si tu as un environnement qui marche avec Qt ou bien (dans le cas d’un NAS), tu sais comment faire pour déployer Qt avec ton app, alors oui Qt est intéressant parce que tu aura un environnement solide.




la version 11 du C++



2011 plutôt non ? Sinon C++11 suffira.








divide a écrit :



Qt est en LGPL depuis 2008.



Sinon le portage de mon appli de Qt 4.8 at Qt 5 a nécessité quelques adaptations (quelques classes ont disparus et des fonctions ont été déplacés) mais rien de bien méchant. Par contre il faut souligner que sur Windows, OpenGL a été abandonné au profit de OpenGL ES, en ce qui me concerne j’ai du réécrire intégralement la partie OpenGL de mon code du coup (d’autant que certaines features d’OpenGL n’ont pas d’equivalent en GL ES).

Sinon sous Windows il n’y a plus de version MinGW, et toujours pas de version 64bit, mais ca devrait théoriquement venir avec Qt 5.0.1.







Ca c’est une belle connerie <img data-src=" />



Moi qui espérait qu’en étant revendu par Nokia, il lacherai cette optique smartphone/mobilité. Ou du moins de maintenir une double compatibilité OpenGL/OpenGLES <img data-src=" />









Killerjeff a écrit :



Ca c’est une belle connerie <img data-src=" />





OpenGL ES étant un subset d’OpenGL, je ne vois pas trop le souci…









brazomyna a écrit :



OpenGL ES étant un subset d’OpenGL, je ne vois pas trop le souci…





<img data-src=" /> Quelle est la logique de cette phrase ?



C’est comme dire : “C est un subset de C++ donc je ne vois pas le problème (de passer du C++ au C)”



Pour compléter ce que je disais un peu plus tot, je me permet de recopier ici mon retour d’experience:



Je viens de porter un gros projet (SpectraLayers) de Qt 4.8/MinGW/OpenGL à Qt 5.0/MSVC/OpenGL ES. Le tout sous Qt Creator.



Le passage de Qt 4.8 à Qt 5.0 n’a pas été une grosse difficulté: quelques fonctions ont été déplacés de classe, et certaines classes ont été renommés, mais grosso modo c’est allé assez vite (98% du code est resté tel quel).

Il faut juste piger que le partitionnement des modules n’est plus le même, par exemple les widgets ne font plus partie du module Gui mais du nouveau module Widget, et donc changer quelques headers globeaux/librairie Qt necessaire au projet.

Pour ceux qui créent des plugins, la déclaration des plugins a aussi légèrement changé, on passe de Q_EXPORT_PLUGIN2 à Q_PLUGIN_METADATA (qui n’ont pas exactement les mêmes paramètres).

A noter aussi la disparition de setAlphaChannel, il faut recréer son propre équivalent.



Le passage de MinGW à MSVC a été un peu plus compliqué, par exemple j’avais quelques sous-projets dans mon code principal qui n’étaient pas compris par MSVC, j’ai du simplifier la structure du projet en transformant mes sous projets du code principal en projets de librairies statique de meme niveau que le projet principal, et lier ces librairies statique à mon code principal.

Il a fallut d’autre part convertir certaines directives de compilation et de déclaration de fonctions propres à gcc, mais j’en avais peu dans mon code. Pour faire la distinction, dans le code c++ j’ai des:



#ifdef __GNUC__



Et dans mon projet .pro:



win32-g*|mac:QMAKE_CXXFLAGS += …

win32-msvc*:QMAKE_CXXFLAGS += …



Il y avait aussi quelques warnings qui sont apparus, mais juste des problèmes mineurs.

Au niveau des perfs c’est à peu près équivalent, voire même un peu gagnant par endroit, par contre j’ai remarqué que MSVC gérait mal l’optimisation de boucles for(;;) compliqués, j’ai du remplacer certaines boucles critiques par un déroulement while(count–) { } simplifié pour retrouver de bonnes perfs (ceci dit j’aurai certainement gagné aussi un peu en perf avec MinGW je suppose).



Enfin, le passage de OpenGL à OpenGL ES a été vraiment galère. Mais quelque part c’est un mal pour un bien, dans la mesure ou OpenGL ES est une version simplifié d’OpenGL ça oblige à repenser de manière un peu plus simple sont code OpenGL (je faisais jusque là allègrement usages de tricks OpenGL en tout genre, y compris de fonctions obsolètes). Heureusement le framework Qt est la pour nous accompagner dans le développement OpenGL ES en fournissant quelques fonctions qui font gagner du temps.

Je dois souligner d’ailleurs que j’ai fait en sorte que mon nouveau code soit compatible à la fois avec OpenGL ES et OpenGL, dans la mesure ou Qt 5 sur mac (mon logiciel est compilé sur mac aussi) utilise toujours OpenGL.

Pour cela, dans mes shaders j’ai rajouté l’entête suivante:



#ifdef GL_ES

precision highp float;

#endif



Et j’ai créé le header suivant pour avoir certaines fontions/variables compatibles GL/GL ES:



#ifndef GLESCOMP_H

#define GLESCOMP_H



//OpenGL/ES2 Compatibility



#include



#ifdef QT_OPENGL_ES_2



#define GLENABLETEX2D

#define GLRGBA32F GL_RGBA

#define GLALPHA32F GL_ALPHA

#define GLLUMINANCE32F GL_LUMINANCE



#else



#define GLENABLETEX2D glEnable(GL_TEXTURE_2D);

#define GLRGBA32F GL_RGBA32F_ARB

#define GLALPHA32F GL_ALPHA32F_ARB

#define GLLUMINANCE32F GL_LUMINANCE32F_ARB



#endif



#endif // GLESCOMP_H



A noter que la signification des paramètres de textures en OpenGL ES n’est pas la même qu’en OpenGL ! Pour envoyer des textures float en OpenGL le code est le suivant:



glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_FLOAT, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, width, height, 0, GL_RGBA, GL_FLOAT, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA32F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA16F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);



Alors qu’en OpenGL ES il faudra écrire:



glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_HALF_FLOAT_OES, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_FLOAT, data);

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_HALF_FLOAT_OES, data);



Ceci dit en utilisant les defines du header de compatibilité que j’ai créé ci-dessus, il y a moyen d’avoir strictement la même écriture dans les 2 cas.

Mon seul regret est la disparition des Pixel Buffer Object (qui ne sont réintroduits que dans OpenGL ES 3), bien pratiques pour faire des transferts rapide de textures, j’ai du compenser en renvoyant mon architecture globale.

Je n’ai pas encore tout à fait finit le portage OpenGL mais le code minimal fonctionnel est en place, il ne faut pas hésiter à s’inspirer des exemples opengl fournis dans le SDK (qui sont pour la plupart compatibles OpenGL/OpenGL ES).



Au final j’ai du passer 10% du temps sur le passage Qt 4.8-&gt;Qt 5, 20% sur MinGW-&gt;MSVC, et 70% sur OpenGL-&gt;OpenGL ES (restructuration complète oblige).

En espérant que ce retour puisse vous éclairer !


c’est bien beau qt5 mais j’ai pas trouvé de lien vers un qt creator+compilo gratuit c’est normal? qt voudrait il rendre payant son offre :o


mattox37 a écrit :





c’est bien beau qt5 mais j’ai pas trouvé de lien vers un qt creator+compilo gratuit c’est normal? qt voudrait il rendre payant son offre :o





Clang


http://qt-project.org/downloads



Les compilos sont gratuits évidemment… Mais si tu veux l’utiliser directement sans recompiler avec MinGW ou autre, donc avec MSVC, il te faut installer la version Express qui est gratuite. Dans Qt 5.0.1 on devrait retrouver la version MinGW…



@divide : Hors sujet mais au lieu de for(;;), c’est carrément plus classe et poétique d’utiliser la magnifique macro “forever” <img data-src=" />


for(;;) c’etait juste une manière schematique d’écrire (j’avais plein de variables dans ce for justement, ce qui causait les ralentissements avec MSVC).

Par contre je ne connaissais pas la macro forever, tu m’as appris un truc la !


Le 22/12/2012 à 16h 09

Ne pas oublier GTK+ et les EFL.








jrbleboss a écrit :



<img data-src=" /> Quelle est la logique de cette phrase ?





J’ai pas assez détaillé, mais qand je disais que c’est un subset d’openGL, sous entendu on reste sur la même techno de base, on part pas dans une techno totalement différente.



D’autant que comme d’autres l’ont souligné ensuite on parle d’une partie précise de Qt, pas forcément de ce qui est censé être ‘attaqué’ en premier par le développeur lambda utilisant le framework, mais plutôt ce qui relève de la tambouille passablement interne du fonctionnement du framework ; comme expliqué, les choses vis à vis d’openGL sont amenées à beaucoup évoluer dans les releases suivantes de Qt 5.X et dans ce cadre, celui qui est vraiment tendu avec l’usage d’openGL n’a juste qu’à attendre un peu pour migrer son existant au lieu de se jeter sur la toute première release.



Bref, tout ça pour dire que s’ils le font c’est pas pour le plaisir de faire ch* leurs utilisateurs, c’est bien parce que derrière, le jeu en vaut clairement la chandelle, notamment pour ce qui concerne l’évolution du framework à moyen long terme et donc son portage vers d’autres environnements (en premier lieu iOS et Android).









sylware a écrit :



Ne pas oublier GTK+ et les EFL.





Comme dit de nombreuses fois au fil des commentaires, ce n’est pas comparable. Déjà, GTK+ et EFL sont des bibliothèques permettant de faire des interfaces graphiques à base de widgets, alors que Qt est un framework complet qui couvre beaucoup de choses, dont les interfaces, avec la possibilité d’utiliser des composants (QWidget) ou des interfaces déclaratives (QtQuick/QML).



Ensuite, ils ne sont pas aussi multiplateforme. EFL ne fonctionne que sur un dérivé Unix, GTK+ ne fonctionne que sous Unix/Windows/MacOS X. Voir le dernier paragraphe de l’article pour les systèmes supportés par Qt. Pour une application mobile multiplateforme, Qt a un train d’avance sur les alternatives que tu cites.



Et toujours pas de support des périphérique de jeu…

<img data-src=" />


C’est vrai que c’est un peu ballot qu’il n’y ai pas de classe QJoystick…


Le 22/12/2012 à 19h 15







Rozgann a écrit :



Comme dit de nombreuses fois au fil des commentaires, ce n’est pas comparable. Déjà, GTK+ et EFL sont des bibliothèques permettant de faire des interfaces graphiques à base de widgets, alors que Qt est un framework complet qui couvre beaucoup de choses, dont les interfaces, avec la possibilité d’utiliser des composants (QWidget) ou des interfaces déclaratives (QtQuick/QML).



Ensuite, ils ne sont pas aussi multiplateforme. EFL ne fonctionne que sur un dérivé Unix, GTK+ ne fonctionne que sous Unix/Windows/MacOS X. Voir le dernier paragraphe de l’article pour les systèmes supportés par Qt. Pour une application mobile multiplateforme, Qt a un train d’avance sur les alternatives que tu cites.







Perso, je ne parlais que de la partie toolkit gfx. Pour le reste, il y a certainement d’autres bibliothèques. Et puis, c’est une erreur de vouloir tout faire. Mais surtout, qt souffre du syndrôme mysql: une usine à gaz, certes open source, mais dont tous les droits pertinents sont détenues par une et une seule entreprise (et puis y a du nokia=crosoft derrière…) C’est du vendor-lock-in open source par la complexité. Donc, dans le choix d’un toolkit graphique, plutôt GTK+ ou les EFL (y en a d’autres plus spécialisés comme clutter avec un coût technique nettement plus faible), ensuite y a des finesses, mais je suis plus GNU GPL, donc j’aurais tendance à préférer le GTK+ (modulo les clutter and co),



Surtout le grand défaut de qt, c’est d’être écrit en c++, donc avec tous ses défauts et ses peu d’avantages. Pour ma part, cela l’élimine par défaut à cause de ça.



Un des défauts majeurs est l’intéropérabilité qui est un cauchemard à cause de l’ABI du c++… en gros il faut utiliser le même runtime c++ pour tout le monde. Car intéropérer avec d’autres framework/langages est déraisonnable, cf le JNI de java qui a le même pb…



Et quand Linus dit qu’il veut garder les codeurs c++ loin de linux, il a très peur des “délires objets” que se permettent pas mal de développeurs (j’ai le même avis). On me souffle à l’oreille qu’il suffit d’avoir une bonne hygiène de code, donc de ne surtout pas utiliser l’ensemble de l’orienté objet de la syntaxe, mais la réponse classique et que si on doit avoir une bonne hygiène de code autant l’avoir dans des langages comme le C, qui sont infiniment moins cher techniquement.



Bref,… je pourrais en écrire des tartines… <img data-src=" />












sylware a écrit :



Perso, je ne parlais que de la partie toolkit gfx. Pour le reste, il y a certainement d’autres bibliothèques. Et puis, c’est une erreur de vouloir tout faire. Mais surtout, qt souffre du syndrôme mysql: une usine à gaz, certes open source, mais dont tous les droits pertinents sont détenues par une et une seule entreprise (et puis y a du nokia=crosoft derrière…) C’est du vendor-lock-in open source par la complexité. Donc, dans le choix d’un toolkit graphique, plutôt GTK+ ou les EFL (y en a d’autres plus spécialisés comme clutter avec un coût technique nettement plus faible), ensuite y a des finesses, mais je suis plus GNU GPL, donc j’aurais tendance à préférer le GTK+ (modulo les clutter and co),



Surtout le grand défaut de qt, c’est d’être écrit en c++, donc avec tous ses défauts et ses peu d’avantages. Pour ma part, cela l’élimine par défaut à cause de ça.



Un des défauts majeurs est l’intéropérabilité qui est un cauchemard à cause de l’ABI du c++… en gros il faut utiliser le même runtime c++ pour tout le monde. Car intéropérer avec d’autres framework/langages est déraisonnable, cf le JNI de java qui a le même pb…



Et quand Linus dit qu’il veut garder les codeurs c++ loin de linux, il a très peur des “délires objets” que se permettent pas mal de développeurs (j’ai le même avis). On me souffle à l’oreille qu’il suffit d’avoir une bonne hygiène de code, donc de ne surtout pas utiliser l’ensemble de l’orienté objet de la syntaxe, mais la réponse classique et que si on doit avoir une bonne hygiène de code autant l’avoir dans des langages comme le C, qui sont infiniment moins cher techniquement.







Au contraire, le fait d’avoir toutes les taches usuelles d’un programme regroupés sous une seule et même librairie avec la même logique/organisation, c’est un gain de temps précieux et autant de clarté dans un programme.

D’autant que chaque module de Qt est bien rodé, que ce soit pour gérer l’interface, le son, le reseau, opengl, le multithreading, les fichiers, etc etc.

Les librairies externes ont leur place pour des taches specifiques qui ne se retrouvent pas dans tous les programmes (par exemple des transformées mathématiques particulieres, la gestion de peripheriques pro, décodage de formats de fichiers exotiques, etc..) mais pour des taches courantes (tel qu’énoncé ci-dessus) c’est tout bénéfice d’avoir une librairie qui a fait ses preuves comme Qt pour prendre ça en charge.

Tes infos datent un peu, ce n’est plus Nokia mais Digia qui gère Qt, et le projet est depuis presque 2 ans co-géré via l’open governance (licence LGPL controlé par les contributeurs), en parallèle de la licence commerciale de Digia. Les deux proposent exactement les mêmes features.

Quand au fait qu’il soit écrit en C++… Quand tu fais un soft qui commence à être un minimum complexe ce serait ballot de se passer des classes. C’est d’ailleurs une des grandes forces du framework Qt, pouvoir dériver tous les éléments de base qu’il propose. En ce qui concerne l’interopérabilité entre compilateurs en pratique c’est gérable, Qt est proposé avec des binaires pour la plupart des compilateurs et si besoin tu peux recompiler l’intégralité de la bibliothèque pour le compilateur de ton choix.



Sans parler de la valeur ajoutée, avec une documentation super complète et l’IDE multiplateforme de Qt, Qt Creator…








divide a écrit :



[…]





<img data-src=" /> Je suis Rozgann et j’approuve ce message ! <img data-src=" />









sylware a écrit :



c’est une erreur de vouloir tout faire





Comme tout choix, ça a ses avantages et ses inconvénients. Tu as parlé des inconvénients, tu as oublié les avantages, dont celui fondamental: avoir un seul choix fait gagner du temps et la cohérence de l’ensemble est incomparable vis à vis de x librairies disparates, donc permet de gagner énormément en efficience ensuite.





une usine à gaz, certes open source, mais dont tous les droits pertinents sont détenues par une et une seule entreprise (et puis y a du nokia=crosoft derrière…)



C’est TA vision du ‘bon’ ou ‘mauvais’ choix de licence, dont l’argumentation est d’autant moins vénérable qu’elle se sent obligée de donner dans le troll pour exister. D’autant que dans le monde réel, 90% des gens cherchent et/ou se satisfont de LGPL-like qui mèle accès aux sources pour comprendre le fonctionnement interne (et éventuellement le modifier à la marge), gratuité, et grande liberté de choix de licence pour leur code à eux qui vient par au-dessus.





Surtout le grand défaut de qt, c’est d’être écrit en c++



Idem qu’avant, tu fais tout pour parler des défauts sans mettre en balance les qualités indéniables d’une approche objet. Nul et non avenu, ou à défaut, tellement orienté que trop peu crédible.



L’argument autour de Linus étant ici le plus risible: en plus d’être un argument d’autorité (donc foireux par nature), il revient à dire que la solution technique n’est pas bonne parce que son utilisation par des gens qui ne savent pas s’en servir donne un résultat mauvais. Aussi pertinent que “un couteau est une mauvaise chose parce certains s’en servent pour tuer”. Voilà pour moi l’argument élu “argument de noël”.





Bref,… je pourrais en écrire des tartines…



Ca suffira, je pense, on a compris. Merci.









Rozgann a écrit :



ce n’est pas comparable. Déjà, GTK+ et EFL sont des bibliothèques permettant de faire des interfaces graphiques à base de widgets





A propos des EFL, elles font quand même un peu plus que proposer des simples widgets ‘à la WxWidgets’, même si c’est pas aussi riche que Qt en terme de besoins couverts ; (je ne connais pas, mais je suppose que) GTK+ est aussi dans cet esprit là.










brazomyna a écrit :



Comme tout choix, ça a ses avantages et ses inconvénients. (…)



Ca suffira, je pense, on a compris. Merci.





Pardon, mais le débat est intéressant quand même, et sylware argumente, donc il a droit à la parole, OK je ne suis pas compétent pour en discuter, mais je me documente un peu aussi grâce à vous.. <img data-src=" />



Je me posais aussi la question de savoir ce que QT5 allait apporter à KDE, c’est le DE que j’utilise.



Le 23/12/2012 à 16h 10







paradise a écrit :



Je me posais aussi la question de savoir ce que QT5 allait apporter à KDE, c’est le DE que j’utilise.







Ca fait longtemps que j’ai pas mis le nez dans leur roadmap, mais je pense pas (je peux me tromper) qu’ils passent à Qt5 avant une prochaine version majeure, qui ne sera utilisable qu’au bout de x versions mineures, donc rien, à mon avis, à court terme.









pafLaXe a écrit :



Ca fait longtemps que j’ai pas mis le nez dans leur roadmap, mais je pense pas (je peux me tromper) qu’ils passent à Qt5 avant une prochaine version majeure, qui ne sera utilisable qu’au bout de x versions mineures, donc rien, à mon avis, à court terme.







Ca dépend. Pour l’instant, ils travaillent sur KDE Frameworks 5, qui regroupe l’ensemble des bibliothèques KDE sur lesquelles sont bâties les applications et les environnements KDE. Le projet a été mené en parallèle de Qt5 puisque certaines parties de bibliothèques KDE ont été directement intégrée à Qt. Et ils mettent l’accent sur la modularité pour éviter d’avoir beaucoup de dépendances inutiles dès qu’on veut utiliser la moindre fonction, comme c’est le cas actuellement. Ca devrait permettre d’augmenter l’utilisation de leur technologie par les développeurs indépendants, et de réduire les temps de chargement des applications KDE utilisées dans d’autres environnements.



Je crois que pour l’instant rien n’est décidé, mais au moment de l’annonce de KF5, ils avaient dit qu’il était tout à fait envisageable d’avoir une version de KDE 4 (au sens l’environnement de bureau) qui tourne sur KF5 (et donc sur Qt5). Ils ont bien dit qu’ils ne voyaient pas du tout la nécessité de tout révolutionner cette fois-ci. S’ils sont repartis sur une base saine avec KDE4, c’est justement pour pouvoir travailler proprement par la suite. Donc la transition pour l’utilisateur sera pratiquement invisible, c’est pour les développeurs uniquement qu’il va y avoir du changement.



Récemment, Martin Grässlin, le mainteneur de KWin, a dit sur son blog qu’il considérait que KDE 4.12 était un objectif raisonnable pour un passage à Qt5, au moins pour les early-adopters. KWin est un des projets qui ne peuvent pas être portés facilement de Qt4 à Qt5, mais pour le reste, le plus gros du travail concerne KF5, qui est relativement avancé. KDE 4.10 sortira en Janvier 2013, Janvier 2014 pour la 4.12. Donc en effet, à court terme, pas de grand changement.



Le 23/12/2012 à 21h 05







brazomyna a écrit :



Comme tout choix, ça a ses avantages et ses inconvénients. Tu as parlé des inconvénients, tu as oublié les avantages, dont celui fondamental: avoir un seul choix fait gagner du temps et la cohérence de l’ensemble est incomparable vis à vis de x librairies disparates, donc permet de gagner énormément en efficience ensuite.







Il me semble que tu n’as pas entendu parlé de la philosophie unix et son retour d’expérience sur près de 40 ans d’informatique: exactement le contraire de ce que tu avances… voir wikipedia.







brazomyna a écrit :



C’est TA vision du ‘bon’ ou ‘mauvais’ choix de licence, dont l’argumentation est d’autant moins vénérable qu’elle se sent obligée de donner dans le troll pour exister. D’autant que dans le monde réel, 90% des gens cherchent et/ou se satisfont de LGPL-like qui mèle accès aux sources pour comprendre le fonctionnement interne (et éventuellement le modifier à la marge), gratuité, et grande liberté de choix de licence pour leur code à eux qui vient par au-dessus.







Tu as raison, je suis connu pour ne pas être un GNU GPL fanboy… <img data-src=" />







brazomyna a écrit :



Idem qu’avant, tu fais tout pour parler des défauts sans mettre en balance les qualités indéniables d’une approche objet. Nul et non avenu, ou à défaut, tellement orienté que trop peu crédible.







ah? Je ne savais pas que l’approche objet était réservé à qt. Tu parlais peut-être de délirium objet pour qt? Car l’objet on en fait même en langage machine si on veut.







brazomyna a écrit :



L’argument autour de Linus étant ici le plus risible: en plus d’être un argument d’autorité (donc foireux par nature), il revient à dire que la solution technique n’est pas bonne parce que son utilisation par des gens qui ne savent pas s’en servir donne un résultat mauvais. Aussi pertinent que “un couteau est une mauvaise chose parce certains s’en servent pour tuer”. Voilà pour moi l’argument élu “argument de noël”.







aaaah! Enfin! Tous les troll ont une analogie FUDesque bien foireuse!







brazomyna a écrit :



Ca suffira, je pense, on a compris. Merci.







C’est triste mais je pense que tu n’as pas trop compris… désolé…



Et au delà d’une problèmatique de choix, il y a des absolus: un frontend de compilateur c++ avec son runtime et une ABI sont monstrueux en complexité par rapport à quasiment tous les autres langages (sauf java qui est sur la même échelle). C’est tellement déraisonnable qu’on pourrait relever de ses fonctions un codeur militaire pour folie furieuse! (moi aussi j’ai le droit aux analogies foireuses, y pas de raisons).



Perso, au lieux de faire du c++ avec une forte hygiène de code pour éviter de partir dans des délires d’usines à gaz objets, je préfère un peu de C, avec un peu d’orienté objet, juste ce qu’il faut, car c’est nettement moins coûteux techniquement pour les raisons précédentes. On perd indéniablement un peu en confort, car “l’orienté objet” n’est pas dans la syntaxe et gérée par un compilateur, mais c’est largement mieux que de s’enfermer dans l’horreur technique qu’est une implémentation c++… on a déjà linux, autant ne pas en rajouter capricieusement.



De plus, l’intéropérabilité objet du c++ n’existe qu’avec lui-même, voir de l’implémentation avec son l’ABI choisie (un vrai cauchemard!). Les trucs à la JNI, c’est juste pour se donner bonne conscience… d’ailleurs le standard c++ n’a même pas son “C++NI”… (d’ailleurs énormement de langages/framework ne sont intéropérables qu’avec eux même).



Ah et au fait, il y a un vrai problème sur le fait que qt/nokia/crosoft se mélangent joyeusement, comme il y a un vrai problème avec le fait que mysql soit tenu par oracle, comme le montre les migrations vers mariadb.



Joyeux Noyel!









sylware a écrit :



….







Nokia n’a plus aucun rapport avec Qt (cf mon commentaire #43), et il est depuis 2 ans co-géré en open-governance. Ceci dit le passage par Nokia a eu beaucoup d’avantage, c’est grace a eux que Qt est maintenant en LGPL et qu’il y a Qt Creator avec un SDK complet.

Je ne comprend vraiment pas ton problème avec C++, ca ressemble plus a une question religieuse qu’à un problème technique franchement vu comme tu le présente….

Perso mon projet C++ est assez conséquent, il utilise tres largement Qt, et il compile sans problème sous Clang, GCC, MSVC et autre, sous Windows, Mac (et probablement Linux, pas testé). C’est vraiment un faux problème ton histoire d’interopérabilité, tu te met des barrières tout seul… Je n’ai rencontré que très peu de difficultés liés au compilateur sur toute la durée de developpement de mon projet (3 ans) et je n’ai trouvé que des avantages a l’approche objet. Tu dois d’ailleurs certainement complexifier inutilement la lecture de ton code à vouloir émuler un comportement objet en C sans l’avoir en natif.



Le 24/12/2012 à 17h 42







divide a écrit :











Tu n’as pas saisi ce que je disais. Ce n’est pas une question de religion, c’est une histoire de compromis sur la complexité technique des composants logiciels vs la complexité de la syntaxe (orienté objet ou non)

Les ABIs des différents compilateurs c++ ne sont pas intéropérables aux dernières nouvelles, mais pour sûr sont toutes des délires en complexité technique. Pour sûr également, il n’y a pas d’équivalent dans le standard comme le JNI du java, donc le c++ ne travaille qu’avec du c++, sauf si il y a un effort conséquent pour le rendre intéropérable avec les autres langages (en général, une API en C/un protocole réseau…). Attention, je n’encourage pas le JNI, car c’est juste du masochisme que de coder dans ce truc. Pour sûr également, la complexité du langage c++, de son runtime avec son ABI, fait que c’est un kludge délirant.

À la lumière de ce que je viens de dire, oui je préfère m’embêter un peu plus à coder un peu de plomberie objet en C, que de dépendre d’un super-ultra-giga-kludge. Cela dans un soucis d’abaisser le coût technique des composants nécessaires pour faire tourner mon code (linux est déjà horriblement complexe, pas la peine d’en rajouter). Tu as le droit de choisir de “payer” le prix de la dépendance sur le kludge au c++, mais ne l’impose pas à ceux qui ont choisit des langages/frameworks plus simples, et pour pouvoir travailler avec eux, soit intéropérable, ce qui signifie dans le monde d’aujourd’hui que tu as un protocole réseau et/ou une API en C (l’alpha/l’omega d’un système informatique).

Si tu as suivi l’actualité de qt/nokia/crosoft… c’est dans le même plan de manipulation que novell/crosoft. Ils sont “grillés”. Dans le milieu linuxien, il n’est pas rare de considérer la distribution gnu/linux suse comme la distribution crosoft… Simplement, la méthode du “proxy” est moins voyante que la méthode employée par oracle… d’ailleurs il y a une telle confiance et une telle entente qu’ openoffice a été forké en libreoffice qui est maintenant le kludge “office” officiel, et je vois un peu partout des remplacement de mysql par du mariadb.



<img data-src=" />









sylware a écrit :



oui je préfère m’embêter un peu plus à coder un peu de plomberie objet en C, que de dépendre d’un super-ultra-giga-kludge







Donc tu t’amuses a gerer les char * a la main et a re-implementer des listes chaines ? Comment tu fais pour parser du XML ? parser du JSON ect… ?

A moins que tu utilises des librairies genre glib, libxml, GTK+ ect… Du coup tu depends de plein de libraries C qui ont souvent des styles de codage differents, qui sont pas toujours multiplateformes, bas niveau ect… et ca pour l’avoir fait c’est du “super-ultra-giga-kludge”.



Avec Qt tu depends d’une seule et unique “librairie/framework” (tu choisies les modules que tu veux utiliser) coherente, bien documentee, bien ecrite, avec un style de codage coherent, haut niveau, multiplateforme ect…



Le 24/12/2012 à 18h 15







tanguy_k a écrit :











Tu confonds les couches informatiques: le giga-ultra-kludge est l’implémentation du c++, c’est le niveau en dessous. Il est évident qu’au delà de ça, il est en général ré-utilisé des composants logiciels spécialisés. Dans le monde open source, aujourd’hui tu as souvent plusieurs composants qui remplissent la même fonction à peu près: tu as le choix. De plus, si la modularité est élevée, et que les coûts techniques des différents composants sont pas trop élevés, les coûts de sortie restent raisonnables. C’est ce que nous apporte le retour d’expérience des 40 ans de la philosophie unix.



<img data-src=" />









sylware a écrit :



le giga-ultra-kludge est l’implémentation du c++







Peut etre, mais c’est pas pour ca qu’il faut jeter le bebe avec l’eau du bain.

Avec Qt tu obtiens des applis performantes et multiplateforme, avec un code source elegant. Qt permet d’utiliser la partie la plus interessante de C++ en mettant de cote les aspects rebutants.



Au passage, si tu n’aimes pas C++, il y a des bindings : Java, Ruby, C#, PHP, Haskell, Perl, Python… (ce dernier etant celui qui fonctionne le mieux et le plus populaire).



Je fais/j’ai fait du Java, C#/ASP.NET MVC, Ruby/Rails et bien sur du C avec GTK+, glib, libxml… Sincerement Qt est juste genial !



Le 25/12/2012 à 10h 46







tanguy_k a écrit :



Peut etre, mais c’est pas pour ca qu’il faut jeter le bebe avec l’eau du bain.









Avec toutes les raisons que j’ai évoquées, et re-évoquées, si justement.



<img data-src=" />



Le 25/12/2012 à 10h 49







tanguy_k a écrit :



Peut etre, mais c’est pas pour ca qu’il faut jeter le bebe avec l’eau du bain.









Avec toutes les raisons que j’ai évoquées, et re-évoquées, si justement.



<img data-src=" />









sylware a écrit :



Si tu as suivi l’actualité de qt/nokia/crosoft… c’est dans le même plan de manipulation que novell/crosoft. Ils sont “grillés”. Dans le milieu linuxien, il n’est pas rare de considérer la distribution gnu/linux suse comme la distribution crosoft… Simplement, la méthode du “proxy” est moins voyante que la méthode employée par oracle…







Même à l’époque où Qt était une propriété de Nokia, associer Qt à Microsoft relevait du troll. C’est encore plus le cas maintenant que c’est totalement indépendant de Nokia, puisqu’ils ont vendu l’entité commerciale à Digia et céder la propriété intellectuelle au Qt Project, qui est un projet communautaire. Tu t’entêtes à répandre du FUD sur Qt, malgré toutes les personnes qui te montre que tu as tort, et c’est triste. Tu as droit d’avoir un avis négatif sur Qt, mais au moins, base toi sur des faits réels, pas sur des élucubrations.