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 :

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 :

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.

ListModel {
    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 :

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.

XmlListModel {
    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()" }
}
Ce modèle permet de récupérer le titre, le lien et la description de toutes les news en Europe du flux RSS de Yahoo par l'intermédiaire de XPath.