Le QML : les IHM déclaratives selon Qt
IHM classique
Qu'est ce qu'une IHM
L'Interface Homme Machine est l'interface qui permet à un humain de contrôler le déroulement d'un programme informatique. C'est par exemple les fenêtres qui permettent de naviguer au sein de ses fichiers, de contrôler la lecture de la musique ou encore de rédiger un document. Les études sur ces IHM sont surtout basées sur l'amélioration de l'ergonomie pour simplifier la prise en main d'un logiciel ainsi que le rendu graphique pour avoir un affichage plus agréable.
Qt, qui développe un framework permet de créer des IHM, étudie depuis sa création la façon dont les utilisateurs se servent des IHM afin que la conception des systèmes soit rapide et simple à mettre en oeuvre. Il assure également une ergonomie, une efficacité ainsi qu'une utilisation simplificiée pour l'utilisateur final en proposant un mode de fonctionnement standard en fonction du système d'exploitation (Windows, Mac, Linux, ...) laissant aux développeurs la possibilité de se focaliser sur la partie métier.
Problématique
Mais par quoi peut-on définir une interface ?
- Puissance graphique ?
- Méthode de contrôle ?
- Son but ?
Il y a 15 ans
- Puissance graphique
- Primitives de dessins en 2D
- Méthode de contrôle
- Clavier
- Souris
- Son but
- Calcul
- Création de contenus en local (document texte, tableur, ...)

Interface d'un Apple 2
Aujourd'hui
- Puissance graphique
- Primitives de dessins en 2D
- Rendu 3D animé
- Transparence
- Méthode de contrôle
- Clavier
- Souris
- Stylet
- Multi-touch
- Accéléromètre
- Son but
- Calcul
- Création de contenus en local (document texte, tableur, ...)
- Création de contenus en ligne (mail, google doc, facebook, ...)
- Communication
- Collaboration

Interface sur un Surface de Microsoft
Vue par widget
A l'heure actuelle, le paradigme le plus répendu est celui de la vue par widget.

Schéma de la vue par widget
Pour les habitués du Java, un Widget est l'équivalent d'un Panel en Swing.
Les principaux éléments de conception d'interfaces utilisateurs de Qt sont les widgets. Ils peuvent afficher des données, des informations sur leur statut, recevoir les entrées des utilisateurs et devenir un conteneur pour les autres widgets qui devraient être regroupés. Un widget qui n'est pas intégré dans un widget parent est appelé une fenêtre.
Un widget a pour objectif premier l'affichage à l'écran. Il doit également recevoir et gérer les actions de l'utilisateur. Tous les éléments d'une fenêtre (zone de texte, image, tableau, bouton, ...) sont des widgets. Chaque widget est donc chargé de son propre affichage dans la zone qui lui est définie dans la fenêtre.
On obtient donc les propriétés suivantes, les widgets :
- sont rectangulaires
- ont un parent et peuvent avoir des enfants
- sont inclus dans leur parent et englobent leurs enfants
- dessinent les pixels dont ils sont responsables
- gèrent leurs contenus
- peuvent être affichés, cachés, déplacés et agrandis
- ne supportent pas les rotations, les étirements et d’avoir un comportement élastique …