Qt Quick : des interfaces déclaratives hors norme ? Pourquoi ne sont-elles pas encore répandues ?

Le , par dourouc05, Responsable Qt
Il y a peu, Nokia lançait Qt Quick, un nouveau module de Qt permettant de décrire des interfaces graphiques, un paradigme alors présenté comme assez nouveau. Or, une simple recherche à l'aide de Google montre bien que ces technologies ne sont pas récentes du tout, on trouve par exemple des traces de K, un langage presque ésotérique tellement il est peu connu du grand nombre actuellement, dans les années 90. Qu'est-ce qui a changé depuis lors ?

Aussi, on peut remarquer que d'autres technologies phares dans le développement applicatif telles que .NET ou Java en disposent depuis belle lurette. On peut notamment citer XAML (arrivé avec le .NET Framework 3.0) du côté .NET ou Swul pour Java. Qu'ont-ils donc de différent ? Peut-on les comparer ? Ils tentent tous d'atteindre un certain but (simplification de l'écriture de telles interfaces, possibilité de laisser des personnes compétentes dans le domaine réaliser des interfaces, pas besoin que les designers apprennent le langage utilisé pour l'application, etc.), y a-t-il au moins un qui y arrive ?

Nokia présente son QML, le langage déclaratif utilisé avec Qt Quick, comme étant un must pour toutes les applications mobiles ; Swul n'en parle pas ; XAML n'est disponible que pour le Windows Phone 7 et Symbian. Y a-t-il réellement une utilité à utiliser de telles technologies pour des applications mobiles ? Deux sociétés au moins le considèrent comme un élément majeur dans ce cas d'utilisation, mais le côté Java de la situation n'en fait même pas mention... Java en retard sur ses concurrents ? Aussi, on peut se demander ce qui arrivera à Qt sur les plateformes mobiles, malgré le récent Qt Mobility et d'autres outils comme PySide, prévus pour le développement sur mobiles : on ne peut pas développer en code natif pour Windows Phone 7, que pourra venir faire Qt et son code natif C++ ? Devra-t-il se cantonner au desktop, ce pour quoi il est historiquement prévu ? Ces projets auxiliaires vont-ils être abandonnés ?

Mais aussi d'un point de vue de l'écriture de tel code : alors que QML et Swul adoptent une syntaxe proche, un langage structuré, Microsoft a joué la carte du XML dont dérive XAML. Remarquons que seuls QML et XAML disposent d'un éditeur visuel. Quels sont les avantages de telle ou telle option ? Le XML, auparavant exclusivement plébiscité, commence à voir son horizon se ternir, avec notamment l'arrivée de concurrents comme le YAML, moins redondants à l'écriture, plus légers. Possède-t-il un avantage dans cette utilisation ? Ou bien ce choix ne se base-t-il que sur une mode ?


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


 Poster une réponse

Avatar de highleaf highleaf - Membre à l'essai https://www.developpez.com
le 17/03/2011 à 13:14
Bien oui c'est ce que je dis c'est de la doc pour C++.

Quand tu te formes à Qt, ce sont justement ces notions dont tu parles qui ne sont pas documentées pour Python et pas forcément évidentes pour un nouveau. Bref en gros pour afficher une liste de 10 éléments dans une liste QML, faut un modèle comme QAbstractListModel, une classe pour créer les objets à passer à la QML (Qobject) et un ensemble de slots/signaux pour échanger les données entre cette vue et le modèle, et bien c'est justement tout cela que je trouve complexe dans cette technologie pour afficher 10 éléments. Et éventuellement d'autres classes si tu veux intercepter un signal particulier pour te synchroniser avec la vue. Avec un framework web, tu passes tes données en JSON et c'est réglé pour au final le même résultat avec 5 fois moins de code.
Avatar de Makano Makano - Candidat au Club https://www.developpez.com
le 17/03/2011 à 13:33
Je suis tassez d'accord avec highleaf pour le coté gestion du modèle. Dès que t'as un truc qui n'est pas une liste faut tout de suite sortir le C++ et très bien maitriser QML pour intégrer correctement ton modèle. Et de ce coté la doc aide pas vraiment.

Mais j'ai quand même envie de croire que c'est la jeunesse du QML qui veut ça.
Avatar de yostane yostane - Membre régulier https://www.developpez.com
le 17/03/2011 à 13:49
QML me fait un peu penser à JavaFX. JavaFX était au début très prometteur mais au final il m'a vraiment déçu. J'espere que QML ne subira pas le même sort.
Avatar de highleaf highleaf - Membre à l'essai https://www.developpez.com
le 17/03/2011 à 14:45
En plus j'aurais préféré générer les vues directement du côté de Python. Dans tous les cas, pour que les dev se mettent au QML après ce qu'il s'est passé autour de Nokia, ils doivent faire un gros effort sur la doc et les exemples. Mais je ne pense pas qu'il y aura une grosse mode QML.
Avatar de yan yan - Rédacteur https://www.developpez.com
le 17/03/2011 à 14:59
Citation Envoyé par highleaf  Voir le message
Bien oui c'est ce que je dis c'est de la doc pour C++.

Ce n'était pas une réponse à ton poste

On ne peut pas créé de QObject avec pyside? definir des signaux? des property, .. ?
http://developer.qt.nokia.com/wiki/P...25c37df1efd5c2
Avatar de highleaf highleaf - Membre à l'essai https://www.developpez.com
le 17/03/2011 à 15:42
Citation Envoyé par yan  Voir le message
Ce n'était pas une réponse à ton poste

On ne peut pas créé de QObject avec pyside? definir des signaux? des property, .. ?
http://developer.qt.nokia.com/wiki/P...25c37df1efd5c2

Je ne crois pas que tu aies lu mon post. Je ne dis pas qu'on ne peut pas le faire, je dis seulement qu'on ne sait pas comment le faire...
Avatar de yan yan - Rédacteur https://www.developpez.com
le 17/03/2011 à 16:01
Citation Envoyé par highleaf  Voir le message
je dis seulement qu'on ne sait pas comment le faire...

j'aurais comme en C++...
Je connais trés peux python mais il semblais que tu pouvais te baser de la doc C++ pour développer en python.
Je vais essayer pour voir. Depuis le temps que j'entend parler de python, faut bien essayer.
Avatar de dscreve dscreve - Membre à l'essai https://www.developpez.com
le 17/03/2011 à 21:30
Et sinon, dans le genre impasse totale, il y a interface builder qui résoud tous les problèmes cités....Cocoa est le seul framework qui fournit des classes de contrôleurs pour implémenter du mvc et empêche pratiquement toute autre forme d'ecriture bancale....
Dans cocoa, on peut décrire son modèle de donnes graphiquement, le câbler à la souris sur sur l'ohm, elle même dessinée entièrement a la souris....on n'ecrit plus que du code métier....

Face a cocoa, Qt s'en sort un peu, Xaml un peu moins bien, et alors java est complètement a la rue.
Avatar de Khertan Khertan - Membre à l'essai https://www.developpez.com
le 28/03/2011 à 11:43
QML, ca peut être pas mal dans le futur, mais actuellement, ce n'est pas prêt pour le commun des dev.

Exemple typique. Un bouton, il vous faudra prévoir son comportement, ainsi que le feedback qui doit etre rendu a l'utilisateur lors d'un clic ou d'un survol, la tooltip qui va avec, et géré le shortcut ....

Pour revenir la dessus ""3 - Une application en full QML j'y crois pas : il faut toujours de la donnée, soit elle vient du web soit elle vient d'une base ou fichier, dans tout les cas, il faut un langage applicatif derrière, pour moi c'est Python. Le QML est pauvre en modules : pas d'accès à des bases de données, pas de json, pas de parser rss ou des trucs dans le genre."" : il y a un exemple de lecteur rss en full qml, un exemple pauvre de twitter avec du json.

Sinon question rapidité, je n'y crois pas non plus, encore une surcouche. D'ailleurs, j'avais commencé à refaire l'interface de mon client twitter pour n900 en QML mais j'ai laché l'affaire, des que l'on veut faire des interfaces un peu complexe avec autre chose que des tailles fixes, exemple une liste de tweet (donc size row variable) cela recalcul la taille en permanence et saccade sur un n900.
Avatar de gbdivers gbdivers - Inactif https://www.developpez.com
le 28/03/2011 à 12:28
Exemple typique. Un bouton, il vous faudra prévoir son comportement, ainsi que le feedback qui doit etre rendu a l'utilisateur lors d'un clic ou d'un survol, la tooltip qui va avec, et géré le shortcut....

Dans la prochaine version, Qt Quick devrait intégrer Qt Component, un ensemble d'éléments de base (boutons, zone de texte, etc.) pour le QML

Sinon question rapidité, je n'y crois pas non plus, encore une surcouche. D'ailleurs, j'avais commencé à refaire l'interface de mon client twitter pour n900 en QML mais j'ai laché l'affaire, des que l'on veut faire des interfaces un peu complexe avec autre chose que des tailles fixes, exemple une liste de tweet (donc size row variable) cela recalcul la taille en permanence et saccade sur un n900.

Le problème n'est pas réellement la rapidité du QML. Une IHM passe plus de temps à rien faire et à attendre un évènement utilisateur qu'autre chose. Il faut juste bien concevoir son application pour répartir ce qu'il faut du côté du QML et ce qu'il faut du côté de Qt. Un exemple typique, si tu essaies de calculer toi même les dimensions de tes objets QML dans le script, ça va ramer. Si par contre, tu utilises les layouts, le calcul des dimensions et positions sera aussi rapide qu'en C++ (puisque le QML appellera les classes QLayout correspondantes, comme on le ferait aussi en C++). Idem si tu crées des animations en QML au lieu d'utiliser des QAnimations, etc.

Si tu débutes en QML, il est possible que ton code pour ta liste de tweet ne soit pas "optimisé" (si tu veux je peux te donner du code C++ qui ramera aussi... il ne faudrait pas en conclure que le C++ est lent)

Signé : quelqu'un qui n'a pas accroché non plus avec le QML (donc qui n'est pas là pour le défendre particulièrement)
Avatar de Khertan Khertan - Membre à l'essai https://www.developpez.com
le 08/06/2011 à 14:43
Citation Envoyé par gbdivers  Voir le message
Le problème n'est pas réellement la rapidité du QML

Sur un mobile, si tout de même. 8s pour charger la première fenêtre de l'appli c'est trop (Nokia n900 ... 600Mhz ... c'est pas ce qui se fait de plus low cost).

Citation Envoyé par gbdivers  Voir le message
Si tu débutes en QML, il est possible que ton code pour ta liste de tweet ne soit pas "optimisé" (si tu veux je peux te donner du code C++ qui ramera aussi... il ne faudrait pas en conclure que le C++ est lent)

Quelques semaines plus tard ... :

Bon les composants, on attends toujours ... surtout entre les composants pour les tablettes, Handset UX et ceux de Nokia qui n'auront probablement pas d'api commune dans un premier temps.

Sinon concernant ma liste de tweets, le problème viens du calculs des dimensions du textes et du positionnement relatif des éléments. En effet, ils sont recalculé a chaque raffraichissement, défilement, ... ce qui n'est pas le cas avec les QWidgets, car mon paint event à un cache sur les tailles calculé. J'ai donc la raison.

Cependant, QML est toujours loin d'atteindre le niveau des QWidgets au niveau des fonctionnalités. Et le probleme est qu'il ne semble pas prévu de "themer" les QWidget sur Meego Handset UX, ce qui les rends inutilisable.

Exemple typique, il n'est pas possible de faire de la coloration syntaxique dans un TextEdit QML. Certes pour le moment, car certaine personne de #qt-qml tendent à dire que cela sera dispo dans QtQuick 2.0.
Offres d'emploi IT
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)
Consultant sap finance/controlling H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -