Sortie de Qt 5 RC
Avec une restructuration de la documentation

Le , par gbdivers, Inactif
La version 5 de Qt vient de sortir en version alpha. Cette version est la première version majeure depuis que Qt est devenu autonome avec la création du Qt Project. Beaucoup de personnes ont contribué à cette nouvelle version, pas uniquement des développeurs de chez Nokia. Les différents modules ont été regroupés en deux catégories, les essentiels, installés par défaut, et les add-ons, installés à la demande. L'objectif de cette version alpha est de récupérer les retours des utilisateurs, principalement sur les modules essentiels.

Lars Knoll, le responsable en chef du projet Qt, a publié en mai dernier deux discussions sur les QtLabs pour présenter les approches choisies pour Qt 5 (voir les discussions Thoughts about Qt 5 et Responses to Qt 5). La pensée directrice est résumée dans les phrases suivantes :

« Qt 5 doit être le fondement d'une nouvelle façon de développer des applications. Tout en offrant la puissance de Qt natif en C++, l'accent sera mis sur un modèle où le C++ sera principalement utilisé pour implémenter des fonctionnalités modulaires d'arrière-plan pour Qt Quick », a déclaré Lars Knoll.

Neuf mois de travail, plusieurs centaines d'intervenants et plusieurs milliers de modifications du code ont été nécessaires pour aboutir à cette version alpha. Pour cette première version majeure, l'accent a été mis sur la partie embarquée, proche de la vision que Lars Knoll a décrite, mais il faudra attendre les versions 5.1 ou 5.2 pour que cette vision soit entièrement appliquée pour la version desktop.

Cette version alpha est l'aboutissement d'un travail important sur quatre points : QPA, la pile graphique, la modularité et le nettoyage de l’architecture en déplaçant les QWidgets dans les modules add-ons.

Le Qt Platform Abstraction Layer (QPA)
Pour améliorer la portabilité de Qt, il a été nécessaire de restructurer l'architecture pour isoler toutes les fonctionnalités de bas-niveau qui sont spécifiques à une plateforme. Ce travail a permis d'aboutir au QPA, facilitant le portage de Qt sur toutes nouvelles plateformes. Cette abstraction a été introduite dans Qt 4.8 en remplacement de QWS pour les versions embarquées de Qt, mais elle est maintenant disponible pour toutes les éditions dans Qt 5. La meilleure preuve de l’efficacité de cette abstraction est que plusieurs portages sont en cours de développement : pour QNX, iOS et Android, par exemple.

La réorganisation de la pile graphique
Un autre objectif majeur pour Qt 5 est l'amélioration des performances graphiques, en particulier pour les versions embarquées. Pour ce faire, il a fallu réorganiser la pile graphique, pour bénéficier au maximum de l'accélération matérielle. Pour cela, l'accent a été mis sur l'utilisation d'OpenGL.
Par exemple, QtQuick 2 a subi une réorganisation importante se basant sur le graphe de scène et utilisant OpenGL (GL ES 2 minimum) en arrière-plan. QtGui contient maintenant des classes QOpenGL à la place des classes QGL (maintenues dans le module QtOpenGL pour la compatibilité).
On note l’apparition de nouvelles classes :
  • QGuiApplication, plus légère que QApplication (hérite de QCoreApplication et dérivée par QApplication) ;
  • QWindow, pour manipuler les fenêtres de premier plan. QWidget et dérivées continuent de fonctionner, comme dans Qt 4, avec QPainter, bien que cet outil soit moins utilisé pour les autres piles graphiques (il est maintenant limité à la rastérisation logicielle sur écran, les images et les pixels, avec un backend OpenGL et un autre pour la génération de PDF et l'impression).


L'architecture modulaire
Objectif : flexibilité, possibilité de choisir ses modules pour les utilisateurs, meilleure intégration de QtMobility, faciliter les contributions en les incluant comme modules tiers. Il s’agit principalement de ménage interne, peu visible par les utilisateurs (toujours en cours).

Déplacer QWidget dans un module indépendant
Déplacer ces classes dans le module "widgets" permet de garantir la continuité des QWidget et dérivés, mais également l'évolution vers d'autres approches (QML et QtQuick). Cela nettoie l’architecture sur le long terme.

Installation et compilation
Il y a plusieurs moyens d'installer Qt 5. Le plus simple est d'utiliser les binaires non officiels, régulièrement mis à jour :


Passer de Qt 4 à Qt 5
Les changements importants pour conserver la compatibilité du code écrit pour Qt 4 avec Qt 5 sont d’intégrer le module widgets si on utilise des QWidget ou dérivés et de renommer le module QtQuick en quick1. Voici un exemple de code dans le fichier .pro pour garantir la compatibilité :

Code :
1
2
3
4
5
6
7
greaterThan(QT_MAJOR_VERSION, 4)  
{ 
    QT += widgets 
    QT += quick1 
} else { 
    QT += declarative 
}
Le script Perl qtbase/bin/fixqt4headers.pl met à jour les inclusions des fichiers d'en-tête.

Pour la création de plugins, les macros Q_EXPORT_PLUGIN et Q_EXPORT_PLUGIN2 sont dépréciées et doivent être remplacées par la macro Q_PLUGIN_METADATA, qui permet de lire les informations sans devoir charger le plugin avec la fonction dlopen().

Que pensez-vous de la direction prise par Qt ?
Pensez-vous que Qt Quick et le QML prennent une place trop importante ou au contraire devraient se développer plus ?
Quelles sont les fonctionnalités que vous attendez le plus dans Qt 5 ?


Sources :


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de dtrosset dtrosset
http://www.developpez.com
Membre éclairé
le 19/04/2012 0:56
J'attendais surtout la fin du precompilateur moc ...
Avatar de adteulade adteulade
http://www.developpez.com
Futur Membre du Club
le 22/04/2012 12:14
Je pense que s'ils s'orientent vers plus de compatibilité vers des platforms comme IOS et android l'utilisation de Qt par tous les développeurs va exploser, de part sa simplicité d'utilisation et la clarté de sa doc !!!
c'est selon moi la meilleur bibliothèque pour développer
Avatar de gbdivers gbdivers
http://www.developpez.com
Inactif
le 22/04/2012 19:17
Citation Envoyé par dtrosset  Voir le message
J'attendais surtout la fin du precompilateur moc ...

Ce n'est pas (malheureusement) au programme. Probablement à cause de problèmes de compatibilité avec des compilateurs anciens ou exotiques.
Avatar de alpha_one_x86 alpha_one_x86
http://www.developpez.com
Membre du Club
le 01/05/2012 0:37
Il manque des choses de base, on peut lire les dates des fichiers mais pas les définir, les QDir::drivers() ne marchent que sous windows, il manque un modules pour la compression en un format défini, surtout pour QTcpSocket, ...

Qt continue dans la bonne direction, se réorganise quand il y en a vraiment besoin. Pour moi la place de QML est correcte (elle n'accapare ni trop ni trop peu de développement).

Par contre encore une bonne passe sur les optimisations des truc de base ne serai pas du luxe (fichier, réseau, type de base)...
Avatar de gbdivers gbdivers
http://www.developpez.com
Inactif
le 16/08/2012 14:12
Voici une sortie qui est restée très discrète : pas d'annonce officielle, rien sur la page principale du wiki de Qt 5. Mais depuis le 30 juin dernier, les versions de Qt 5 compilé par le moteur d'intégration continu sont taguées en beta (voir la page des builds). La page Re-creating Qt5 binary installers regroupe l'ensemble des liens vers les sources, les binaires et les installeurs. Les binaires sont également installables sur Ubuntu via le gestionnaire de paquet en installant le dépôt ppa suivant : “Canonical Qt5 Edgers” team
Avatar de johnlamericain johnlamericain
http://www.developpez.com
Rédacteur
le 21/08/2012 12:34
Citation Envoyé par gbdivers  Voir le message
Voici une sortie qui est restée très discrète : pas d'annonce officielle, rien sur la page principale du wiki de Qt 5. Mais depuis le 30 juin dernier, les versions de Qt 5 compilé par le moteur d'intégration continu sont taguées en beta (voir la page des builds). La page Re-creating Qt5 binary installers regroupe l'ensemble des liens vers les sources, les binaires et les installeurs. Les binaires sont également installables sur Ubuntu via le gestionnaire de paquet en installant le dépôt ppa suivant : “Canonical Qt5 Edgers” team

Oui étrange... Surement du à tout le remaniement en cours...
Avatar de idiallo idiallo
http://www.developpez.com
Membre Expert
le 21/08/2012 15:32
Citation Envoyé par gbdivers  Voir le message
Voici une sortie qui est restée très discrète : pas d'annonce officielle, rien sur la page principale du wiki de Qt 5. Mais depuis le 30 juin dernier, les versions de Qt 5 compilé par le moteur d'intégration continu sont taguées en beta (voir la page des builds). La page Re-creating Qt5 binary installers regroupe l'ensemble des liens vers les sources, les binaires et les installeurs. Les binaires sont également installables sur Ubuntu via le gestionnaire de paquet en installant le dépôt ppa suivant : “Canonical Qt5 Edgers” team

Le tag "beta" veut juste dire que c'est la branche de la beta - la beta elle même n'est pas sortie encore.
Avatar de Troudhyl Troudhyl
http://www.developpez.com
Modérateur
le 21/08/2012 15:50
Exact, il y a des snapshots de la branche "beta" seulement.
Avatar de dourouc05 dourouc05
http://www.developpez.com
Responsable Qt
le 30/08/2012 18:04
Première version majeure à sortir sous l'égide du Qt Project, synonyme et symbole de l'ouverture du projet Qt au monde (et du désistement progressif de Nokia), Qt 5 est à présent disponible en beta. Cette version majeure est en cours de développement depuis plus d'une quinzaine de mois (du moins, son annonce officielle) et, sur ce temps, bien des changements architecturaux ont eu lieu (voir ci-dessus, notamment), la communauté du Qt Project n'ayant cessé de s'élargir.

Cette nouvelle version permettra de créer plus facilement et plus rapidement des applications exigeantes mais performantes (même avec des ressources limitées, le GPU sera plus utilisé ; par exemple, on peut atteindre le nirvana de 60 FPS sur le Raspberry Pi, pour bien moins que cinquante dollars), avancées en termes d'interface (avec la nouvelle version majeure de Qt Quick).

Modularisation

Une grande nouveauté de cette version est, pour rappel, la modularisation, maintenant achevée : ils seront plus indépendants les uns des autres, sans devoir faire partie du cœur de Qt, pour faciliter l'utilisation de quelques modules seulement, sans devoir compiler/télécharger le reste. Ainsi, on distingue ceux qui font partie du cœur, de Qt Essentials, et les add-ons. On ne parlera plus de Qt Mobility comme d'un produit complémentaire, mais comme une série de modules de Qt. Ainsi, KDE pourra proposer tout son framework comme add-on de Qt, au lieu de le maintenir bien séparé comme actuellement.

Ce nettoyage s'accompagne de nouvelles API dans Qt Core (support de JSON, expressions régulières compatibles Perl – une implémentation plus rapide et offrant plus de fonctionnalités que l'actuel QRegExp –, reconnaissance des types MIME, chemins standard), de la vérification des connexions des signaux et slots à la compilation, etc. Certaines de ces fonctionnalités sont directement inspirées de KDE, voire reprises.

De même, côté GUI, OpenGL fait maintenant partie de Qt GUI, avec quelques améliorations (QWindow étant une meilleure abstraction pour les fenêtres de haut niveau que QWidget).

Les widgets font maintenant partie d'un module non essentiel, il faudra en activer le support manuellement, mais les API basées sur des widgets continueront d'exister. Elles sont d'ailleurs implémentées par-dessus les fonctionnalités proposées par Qt GUI, tout comme Qt Quick.

Le plug-in Visual Studio est mis à jour pour supporter ces fonctionnalités (bien que toujours en beta), en adaptant l'existant ; cependant, cette nouvelle version ne supporte plus Qt 4, du moins pour le moment.

Performances et interfaces graphiques

Qt 5 a pris à bras le corps deux problèmes pour la conception d'interfaces graphiques à hautes performances : les outils pour concevoir ces interfaces et les performances de leur rendu.

D'un côté, de nouvelles API et extensions ont été ajoutées à Qt Quick pour faciliter la création d'applications riches et fluides pour des périphériques orientés vers les entrées tactiles (tout en gardant le support des entrées clavier). Le module de support de WebKit supporte également de base des interactions tactiles.

Pour les performances, c'est toute une nouvelle pile graphique qui est disponible, entièrement basée sur OpenGL, facilitant l'intégration de contenu OpenGL (shaders et particules, par exemple). Le rendu du texte est aussi entièrement accéléré matériellement (meilleures performances, consommation moindre), d'où les bonnes performances même sur du matériel bon marché (bien qu'il faudrait voir ce sur quoi portaient les tests).

Compatibilité des sources

Évidemment, si tout ceci s'effectue comme lors de la transition de Qt 3 vers Qt 4, les développeurs se montreront réticents ; cependant, un des objectifs a été de faciliter la transition tant du code que des compétences de Qt 4 à Qt 5, en gardant la compatibilité des sources autant que possible (Qt Creator, actuellement, peut être compilé tant avec Qt 4 que Qt 5, sans changement dans le code).

Le principal est de changer les fichiers de projet, pour prendre en compte la modularisation du framework. Un script est d'ailleurs fourni à cette fin. Cependant, tout le code s'intégrant directement avec le système de fenêtrage natif devra être adapté.

Sources : http://labs.qt.nokia.com/2012/08/30/qt-5-beta-is-here/, http://195.197.180.217/en/Blogs/Qt-b...been-Released/
Avatar de MicroJoe MicroJoe
http://www.developpez.com
Nouveau Membre du Club
le 30/08/2012 21:56
Pour les performances, c'est tout une nouvelle pile graphique qui est disponible, entièrement basée sur OpenGL, facilitant l'intégration de contenu OpenGL (shaders et particules, par exemple). Le rendu du texte est aussi entièrement accéléré matériellement (meilleures performances, consommation moindre), d'où les bonnes performances même sur du matériel bon marché (bien qu'il faudrait voir ce sur quoi portaient les tests).

Du Qt au rendu accéléré via la carte graphique à l'instar de WPF ? J'aime.
Offres d'emploi IT
Développeur web
Alternance
RELATIA - Ile de France - Paris (75002)
Parue le 21/08/2014
Maîtrise d'Ouvrage sur application de gestion de portefeuille H/F
CDI
Société Générale France - Ile de France - Paris / Ile de France
Parue le 01/08/2014
Administrateur système et base de données h/f
CDI
CTS - Midi Pyrénées - Toulouse (31000)
Parue le 08/08/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula