Qt Quick vs Qt Widgets
Comment choisir entre Qt Quick et Qt Widgets ? Le second s'est fait remplacer par Qt Quick Widgets mais garde un petit avantage !
10/01/2022
Nathanaël Landais
Votre choix est fait, vous allez développer votre produit avec Qt. Mais à peine ce choix fait qu’un autre s’offre à vous. Pour votre gui embarqué, vaut-il mieux utiliser Qt Widgets ou Qt Quick ?
Pourquoi existe-t-il deux choix, à quoi bon développer deux technologies différentes pour le même usage ?
Qt Widgets est la solution de conception d’interfaces utilisateurs dite historique de Qt.
Vous développez votre GUI avec des « widgets » créés dans le code C++ de votre application.
Qt Quick est une solution apparue plus tard, avec Qt 4.7.1.
L’approche est différente, cette fois-ci votre code d’interface utilisateur est séparé du reste de votre application.
Avec Qt Quick vient un nouveau langage dédié à cet usage, le QML (Qt Markup Language).
Mais Qt Quick n’a pas signé la fin de Qt Widgets. En effet, même si les développements du framework sont désormais centrés sur Qt Quick, les deux restent complémentaire et il existe toujours au moins une bonne raison de continuer à utiliser la solution historique.
Je suis Nathanaël Landais, architecte en développement de logiciels embarqués IoT. J’ai conçu et développé des systèmes embarqués s’appuyant sur des composants open source aujourd’hui distribués en centaines de milliers d’exemplaires à travers le monde. Leur point commun, des interfaces utilisateur modernes et fluides.
Qt Quick, le pour et le contre
Les avantages
-
Une technologie moderne activement développée par Qt
Des nouveautés sont encore ajoutés fréquemment, augmentant toujours plus les possibilités apportées par cette technologie. -
Des interfaces utilisateur au look plus moderne et plus facilement personnalisables
Avec Qt Quick et QML il est possible de choisir parmi plusieurs thèmes fournis directement avec Qt.
Des thèmes tels que le « Material Design » de Google.
Il est aussi très simple en QML de modifier ou créer des nouveaux éléments UI personnalisés. -
Une vraie séparation entre votre code métier et le code GUI.
Séparer très clairement le code métier de celui de l’interface utilisateur est essentiel pour éviter que des modifications UI n’affectent le fonctionnement du reste de l’application.
Avoir un langage dédié à l’interface utilisateur aide à renforcer cette séparation. - Un développement d’UI bien plus rapide grâce au langage spécialisé
Il y a donc beaucoup d’avantages considérables à utiliser Qt Quick.
Mais il y a aussi un inconvénient principal : le QML n’est pas du C++, c’est un langage interprété,
avec un prix à payer sur la consommation de ressources.
Qt Quick peut compiler votre code QML en bytecode qui doit ensuite être lu et interprété à l’exécution.
Si l’utilisation d’un bytecode réduit la consommation de ressources, elle ne la ramène pas à celle d’un code purement C++. Il faut compter autour de 60 Mo d’empreinte mémoire en plus pour Qt Quick par rapport à Qt Widgets.
L’alternative Qt Widgets
Les avantages
- Des performances natives permises par le développement en C++
-
Pas de nouveau langage à apprendre
On reste dans le même langage que le reste de l’application.
Les inconvénients
- Une technologie ancienne délaissée pour laisser la place à Qt Quick
- Le développement d’interface utilisateur est plus laborieux en C++ qui n’est pas adapté à cet exercice
Alors, Qt Quick ou Qt Widgets
Dans la majorité des cas, je vous répondrais Qt Quick, c’est la solution actuelle et future. Utiliser Qt Widgets c’est se limiter à une technologie passée avec plus d’inconvénients que d’avantage. Reste que si votre projet à des contraintes matériels forte avec des ressources très limités, Qt Quick peut ne tout simplement pas être envisageable. Dans ce cas Qt Widgets peut être une alternative.
Vous hésitez encore entre les deux ? Contactez-nous pour en discuter. Nous analyserons votre produit pour voir quelle est la meilleure solution pour vous. Si votre choix est fait, j’ai développé de nombreux produits avec les technologies Qt, je peux vous accompagner dans vos développements.
Avez-vous réfléchi à la question des licences ? Qt est disponible sous licence commerciale et open source. Pour vous aider, j’ai écrit cet article : Qt – Choisir entre licence open source et commerciale !