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

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

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

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

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

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

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

Je m'inscris !

Sortie de la version finale de Qt 5
L'architecture interne du framework C++ a été nettoyée et devient plus modulaire

Le , par dourouc05

58PARTAGES

3  0 
Sortie de Qt 5 alpha
La première version majeure du Qt Project autonome se concentre sur les performances et les capacités graphiques

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 : Sélectionner tout
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 lu gratuitement 2 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

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

Avatar de gbdivers
Inactif https://www.developpez.com
Le 03/03/2013 à 10:16
Cela fait des années que QFtp est déprécié, il faut pas s'étonner qu'il soit supprimé un moment donné.
Le pourquoi de la suppression, je dois avouer ne pas savoir, je me suis pas trop intéressé à la question

Quand au fait que Qt se meurt...
2  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 04/02/2013 à 16:39
En parlant de bugs, la màj de Qt 5.0.0 vers Qt 5.0.1 ne peut se faire que via une réinstallation complète de Qt5. Le "Maintenance Tool" de Qt5 a un bug rendant impossible la modification de l'installation actuelle ainsi que la màj des composants déjà installés. La seule chose possible à partir du Maintenance Tool est la suppression complète. Le bug est déjà connu depuis Qt 5.0.0 et est donc répertorié ici.
1  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 04/02/2013 à 19:24
Citation Envoyé par gbdivers Voir le message
Ok, là tu m'as perdu Je dois avouer utiliser Qt sous différentes plateformes, sans avoir eu besoin d'utiliser ce QtMain. Mais c'est peut être transparent quand on utilise qmake ? Sinon, comme j'ai pas testé VS 2012 avec Qt 5.0.0, je sais pas trop quel est ce problème spécifique de QtMain, j'ai jamais rencontré
Tu bosses sous windows? Verifie comment est declare ton main(). Si tu ne link pas avec QtMain alors soit tu as des macros pour avoir la bonne signature de WinMain(), soit c'est un projet "console" et ya une console qui s'affiche quand tu le lances.

C'est vrai pour tous les projets GUI sous windows, quel que soit la lib que t'utilises.

Mais c'est peut être transparent quand on utilise qmake ?
Certainement! Le link doit se faire tout seul j'imagine. Moi je le definis specifiquement parceque j'utilises CMake.

Enfin bref, tant qu'ils sortent des binaires bientot, je me fais pas de souci.
1  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 19/02/2013 à 16:31
Ni vrai, ni faux. Ils disent juste "voici les binaires compilés avec VC 2012 sur win 8", pas que cela marche ou ne marche pas ailleurs. Ils testent un certain nombre de combinaison possible (OS, compilateur, options de compilation), mais ils ne peuvent pas être exhaustif. C'est au utilisateurs de tester si c'est compatible sur les autres plateformes et de remonter les éventuels bugs
1  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 03/03/2013 à 14:17
Pas de raison précise, c'est un choix purement arbitraire. D'autres sur la mailling list avait posé la question. Il y avait déjà une version Win 7 32b MSVC 2010, du coup, ils ont fait une version Win 8, 64b MSVC 2012.
Je suppose que les binaires seront progressivement ajouté avec le temps (mais j'ai pas suivi en détail depuis quelques temps ces histoires)
Sinon, il y a un temps où la rubrique Qt proposait des binaires de Qt pour les versions non pris en charge officiellement. Vous pouvez le faire si vous le souhaitez, en déposant vos binaires sur la page de téléchargement : http://cpp.developpez.com/telecharge...tegorie/10/C-C (ça n'ira pas pour les pros, qui veulent des binaires officiels ou compiler par leurs soins, mais pour les tests, ça ira)
Sinon, voir directement sur qt-project pour demander les binaires
1  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 13/04/2013 à 11:35
1. dans 5.1 (qui est actuellement en alpha) et non dans 5.2 (je crois qu'il y aura Qt3D en plus dans 5.2)
2. oui
3. oui

Si tu veux, tu peux utiliser Qt 5, mais tu n'auras pas effectivement le support OpenGL 4, il te faudra créer tes contextes toi même
Je te conseille effectivement de rester sur Qt 4 pour le moment dans ton cas
1  0 
Avatar de
https://www.developpez.com
Le 21/12/2012 à 15:20
Citation Envoyé par Freem Voir le message
Un point qui n'a pas été trop abordé, le support du C++11:
je sais qu'aucun compilateur n'implémente complètement la nouvelle norme, et qu'une compatibilité avec l'obsolète implique de pouvoir faire sans, mais ont-ils commencé à donner la possibilité de l'utiliser?
Parce que C++11 offre tout de même de sacrés avantages, et j'ai vraiment hâte à ce que les compilos l'implémentent correctement, et il serait regrettable qu'un framework aussi répandu que Qt n'offre pas la possibilité d'en user.
Pour ce qui est de C++11, les gars de Qt encouragent son utilisation. Qt Creator supporte pas mal de features et des efforts ont été fait dans le framework.
https://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
http://woboq.com/blog/cpp11-in-qt5.html
0  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 21/12/2012 à 15:38
Citation Envoyé par gbdivers Voir le message
@Klaim
Allez, petit cadeau de noël : la mise à jour du plugin MSVC pour Qt 5 et MSVC 2012 vient de sortir : http://blog.qt.digia.com/blog/2012/1...qt-5-released/
Super!

Mais donc ca marche avec les binaires Qt5 VS 2010?

Je vais tester de suite tiens...
0  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 21/12/2012 à 15:44
Wow c'est quoi toutes ces licenses a l'installation???? D:

EDIT> Pendant que j'y suis: ya pas de plans pour les binaires en 64 bit aussi pour VS2012?
0  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 21/12/2012 à 18:49
@Klaim
j'ai pas installé donc je vois pas trop de quoi tu parles. Il n'y a pas que 2 licences ? 1 commerciale et 1 open source ?

Pour MSVC 2012, elle n'est pas prévu qu'en version 64b ?

@Freem
standard de facto pas dans le sens où Qt est une bonne lib pas utilisé ou parce qu'elle complique la chaine de compilation (mais le C++ n'impose pas de toute façon de chaine de compilation) ou parce qu'il existe d'autres libs.
Elle est le standard parce que la plus utlisée, et de très loin. Regarde le nombre d'utilisateur des différentes libs dont tu parles, la fréquentation des forums, la fréquence des news, la présence des devs aux conférences C++, etc

C'est quoi cette histoire de binaire ? Qt propose des binaires pour windows depuis... je sais plus quand, probablement que les premiers hommes préhistoriques avaient déjà des versions de Qt pour windows

déjà beaucoup de place gâchée pour les contrôles et des panneaux
Décidément, j'ai du mal à voir de quoi tu parles... Les icones dans les barres de fenêtres sont relativement petits (plus petits que les icones des barres d'outils habituels), les seuls éléments obligatoires a priori sont le menu et la barre des modes à gauches. Les autres fenêtres sont masquables

Qt ne pourra jamais aspirer au termes de standard du C++ (de facto ou pas), tant qu'ils n'auront pas résolu ce problème
Petite précision, Qt est compatible C++ standard. Pour simplifier l'écriture de certaines parties du code (introspection, signaux/slots), il est possible d'écrire du méta code (les balises de Qt comme signals, slots, Q_OBJECT, etc) qui est convertie en code C++. Mais c'est juste une facilité, si tu veux écrire que du C++ et ne pas passer par le moc, tu peux (mais alors amuse toi bien avec la syntaxe pour créer une connexion, c'est du lourd... cf la doc)
0  0