Le QML : les IHM déclaratives selon Qt
Fonctionnalités supplémentaires
Cette partie s'adresse surtout aux développeurs ayant l'habitude de la création d'IHM.
Layouts
Comme tous les framework permettant de créer des IHM, il est possible d'utiliser des Layouts. Il existe actuellement quatre types :
- Column, qui permet un affichage vertical
- Row, qui permet un affichage horizontal
- Grid, qui permet un affichage sous forme de tableau
- Flow, qui ressemble au FlowLayout de Java
Il est à noter également qu'il est possible d'utiliser les transistions sur les layouts pour ajouter une animation sur l'ajout ou la suppression d'éléments.

Exemple d'animation sur un layout Column
MVC
Qt permet également d'utiliser un design pattern récurrent en interface graphique : le MVC. En effet, Il est possible de créer son propre modèle de données et de le fournir aux vues offertes par Qt.
Il est possible d'obtenir un affichage sous différentes formes :
- Une liste d'éléments
- Une grille d'éléments
- Une vue sous forme de chemin
Les effets graphiques, comme le défilement cinétique, et la gestion des évènements souris sont gérés de façon automatique par la vue pour correspondre aux standards ergonomiques actuels. Il est possible d'en modifier le comportement mais cette solution du "par défaut" permet un fonctionnement différent en fonction de la plateforme, et ce, de façon totalement transparente pour le développeur final.
On peut trouver ci-dessous un exemple de code permettant de réaliser une vue simple affichant le nom et le prix des fruits du modèle. On peut noter la présence d'un "Component" nommé "fruitDelegate" qui permet de spécifier soi-même le rendu graphique de chaque élément affiché par la liste.
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
Component {
id: fruitDelegate
Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
}
ListView {
model: fruitModel
delegate: fruitDelegate
}
Ouvert sur le web
Un bon nombre de fonctionnalités utilise directement Internet. Il a été demandé de simplifier au maximum l'accès et l'utilisation de ressources présentes sur le web. Il est ainsi possible d'utiliser WebKit pour l'affichage de pages web.
Qt intègre aussi une récupération de contenus. On peut, en effet, récupérer :
- Des images
- Des polices de caractères
- Des flux RSS
- ...
On peut, par exemple, noter l'existence d'un modèle de données gérant simplement le XML. Il est possible ainsi de lire facilement un flux RSS et de le mettre en forme au travers d'un delegate. Une vue se chargera ensuite de l'affichage.
id: feedModel
source: "http://rss.news.yahoo.com/rss/europe"
query: "/rss/channel/item"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "link"; query: "link/string()" }
XmlRole { name: "description"; query: "description/string()" }
}