Qt et WinRT : quoi de neuf ?

Windows Runtime (WinRT) est une plateforme logicielle qui tend à homogénéiser l’interface des applications Windows universelles (UWP, universal Windows platform), notamment imposée sur le Windows Store. Cette bibliothèque vise à remplacer l’API Win32, qui commence à montrer son âge, notamment parce que cette API n’est pas du tout orientée objet et provient de l’époque Windows 95 : au contraire, WinRT s’inscrit dans le futur. Cet cadre logiciel, arrivé avec Windows 8, exploite les concepts orientés objet et s’étend sur bon nombre de plateformes, tant de bureau (Windows 8, 8.1, 10) que mobiles (pour téléphones — Windows Phone 8.1, Windows 10 Mobile — ou non — Windows 10 IoT, Hololens, Xbox One). Qt est, bien évidemment, compatible avec WinRT et permet de développer des applications UWP, en profitant des dernières avancées de Microsoft (comme le glisser-déposer).

État actuel avec Qt 5.6 et 5.7

Qt 5.6 a nécessité pas mal de travail côté WinRT. En effet, depuis cette version, toute l’interface est dessinée dans une couche XAML, afin de s’intégrer au mieux à la plateforme. Actuellement, le code permet d’échanger pas mal d’informations internes avec le moteur d’exécution XAML, notamment afin d’intégrer du contenu XAML dans une application Qt : Qt WebView en profite pour utiliser le navigateur local (Microsoft Edge) dans une application Qt Quick.

Qt 5.6 est arrivé avec d’autres fonctionnalités intéressantes, comme la gestion de la caméra dans Qt Multimedia ou la reconnaissance du stylet (notamment pour les Microsoft Surface). Qt 5.6.1 améliore le confort de vie pour développer des applications UWP au niveau des fichiers de projet qmake : il n’est plus nécessaire de préciser CONFIG += windeployqt pour créer une solution Visual Studio, cela est fait automatiquement ; de même, en précisant QT += multimedia, bon nombre de fonctionnalités sont activées, comme l’accès à la webcam ou au micro (qu’il est bien sûr possible de désactiver).

Qt 5.7 n’est pas resté en retrait pour les améliorations. Ainsi, l’audio passe maintenant par WASAPI, qui garantit une latence moindre que précédemment — également accessible sous Windows, pour du développement d’interfaces classiques. L’inconvénient est alors que WASAPI synchronise le taux d’échantillonnage avec celui du pilote audio, sans donner la possibilité au développeur de convertir automatiquement le flux audio. Cette fonctionnalité n’est pas activée par défaut et doit être compilée séparément.

Aussi, côté Qt Quick, le code JavaScript peut être compilé à la volée (JIT), comme sur la plupart des autres plateformes. Initialement, comme Apple, Microsoft avait interdit toute génération de code pour des applications Windows Store, comme mesure de sécurité. Cependant, cette interdiction semble avoir été levée, même s’il n’y a pas encore eu de communication officielle à ce sujet. Grâce à cela, les applications Qt Quick peuvent être sensiblement accélérées, certains fonctions s’exécutant plus de cent fois plus vite. Au vu des incertitudes à ce sujet, cette fonctionnalité doit être activée manuellement et pourrait être retirée d’une prochaine version de Qt.

Fonctionnalités en cours de développement

Dans le futur, les développeurs espèrent que le module JIT pourra être activé pour les plateformes ARM : de par leur puissance, toute accélération possible du code est bonne à prendre. Cependant, toutes les fonctionnalités requises ne sont pas encore disponibles dans les API fournies par Microsoft, même si l’implémentation a déjà commencé côté Qt.

Les fonctionnalités de Qt 5.8 seront arrêtées d’ici un mois, WinRT aura droit à son lot. Notamment, le Bluetooth basse énergie sera accessible (comme sous Android et iOS actuellement) et le module Qt Purchasing sera étendu au Windows Store pour fournir des achats à l’intérieur des applications. Qt Speech arrivera en préversion technologique, avec côté WinRT la mise à disposition de l’API de synthèse vocale de Microsoft. De même, les travaux de découplage de Qt Quick par rapport à OpenGL ne serviront pas qu’à implémenter certaines parties sur Vulkan : ces applications pourront être affichées avec DirectX 12.

Source : Status Update on Qt for WinRT / UWP.
Merci à Claude Leloup pour ses corrections.

Laisser un commentaire