Qt 6.10, la dernière version du framework de développement d'applications multiplateforme, est disponible avec le backend audio PipeWire et de nombreuses autres améliorations

Qt 6.10 est désormais disponible en tant que dernière mise à jour fonctionnelle de cette boîte à outils open source et multiplateforme. Dans Qt 6.10, un backend audio PipeWire natif est ajouté au module Qt Multimedia et le module Qt WebEngine prend désormais en charge les extensions Chromium. Qt Graphs a bénéficié d'un certain nombre d'améliorations pour ses capacités graphiques 2D, telles que la prise en charge du survol et la prise en charge multi-axes.

Qt est un framework de développement d'applications multiplateforme permettant de créer des interfaces utilisateur graphiques ainsi que des applications multiplateformes qui fonctionnent sur diverses plateformes logicielles et matérielles telles que Linux, Windows, macOS, Android ou des systèmes embarqués, avec peu ou pas de modifications du code source sous-jacent, tout en restant une application native avec des capacités et une vitesse natives.

Qt 6.10 est désormais disponible en tant que dernière mise à jour fonctionnelle de cette boîte à outils open source et multiplateforme. Dans Qt 6.10, un backend audio PipeWire natif est ajouté au module Qt Multimedia et le module Qt WebEngine prend désormais en charge les extensions Chromium. Qt Graphs a bénéficié d'un certain nombre d'améliorations pour ses capacités graphiques 2D, telles que la prise en charge du survol et la prise en charge multi-axes. QRhi de Qt GUI prend désormais en charge l'énumération des adaptateurs graphiques 3D lors de l'exécution sur Direct3D 11/12 ou Vulkan.

Cette version apporte également des améliorations des performances pour QGrpcHttp2Channel et diverses améliorations en matière d'accessibilité. Qt 6.10 ajoute l'outil lottietoqml pour convertir les fichiers Lottie en scènes Qt Quick dans QML. Il existe également un plug-in VectorImage qui permet de charger directement des fichiers Lottie en plus des fichiers SVG. Pour cette version, on peut également citer : prise en charge des pages de 16 Ko sur Android, gestion des sessions Wayland, notifications de réinitialisation graphique pouvant être utilisées par des applications telles que KDE KWin et prise en charge de Yocto 5.2 avec Boot to Qt.


Voici un extrait de l'annonce de Qt 6.10 :


Améliorations en matière d'accessibilité

Le mode contraste élevé est devenu une fonctionnalité clé des principaux systèmes d'exploitation pour améliorer la clarté visuelle et la convivialité. Avec la sortie de Qt 6.10, nous alignons nos styles intégrés sur les paramètres de contraste spécifiques à chaque plateforme. Cela rend vos applications visuellement cohérentes avec le reste de l'expérience utilisateur et plus accessibles à un plus large éventail d'utilisateurs. De plus, vous pourrez plus facilement vous conformer aux différentes réglementations en matière d'accessibilité.

Nom : 1.jpg
Affichages : 1726
Taille : 56,3 Ko

Mise en page Flexbox

Qt propose depuis longtemps une variété de types de mise en page qui organisent automatiquement les composants de l'interface utilisateur au sein d'une interface utilisateur. Les mises en page de Qt sont particulièrement bien adaptées à la création d'interfaces réactives et redimensionnables, ce qui est idéal pour créer des interfaces utilisateur qui doivent fonctionner sur diverses plateformes, avec différentes tailles d'écran et différents formats. Cela permet également de créer une interface utilisateur unique qui peut être traduite dans des langues avec des longueurs de texte variables, ou lorsque les utilisateurs préfèrent différentes tailles de police.

Avec Qt 6.10, un nouveau type FlexboxLayout vient s'ajouter aux types de mise en page existants dans Qt Quick. FlexboxLayout de Qt offre des fonctionnalités similaires à celles de Flexible Box Layout de CSS, tout en s'intégrant étroitement aux concepts familiers du mécanisme de mise en page de Qt Quick, tels que les propriétés attachées pour configurer le comportement des éléments individuels dans la mise en page.

Nom : 2.jpg
Affichages : 321
Taille : 18,4 Ko

QRangeModel

L'une des nouvelles classes de Qt 6.10 est QRangeModel, une implémentation QAbstractItemModel légère et polyvalente conçue pour exposer les plages C++, telles que std::vector, std::array ou tout conteneur itérable, directement aux vues d'éléments dans Widgets, ainsi qu'aux vues QML et Qt Quick. Que les données soient constituées de valeurs simples comme des entiers ou de types plus complexes comme Q_GADGETs ou std::tuples, QRangeModel génère automatiquement les rôles appropriés et rend les données accessibles dans les délégués sans nécessiter de code modèle standard. Par exemple, un std::vector<int> peut être encapsulé dans un QRangeModel et utilisé dans une interface utilisateur Qt Widgets comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
std::vector<int> values = {1, 2, 3, 4, 5};
auto model = new QRangeModel(values);
QListView *listView = new QListView;
listView->setModel(model);


Lorsqu'il est utilisé avec des gadgets, QRangeModel expose automatiquement chaque propriété en tant que rôle nommé, ce qui permet aux délégués QML de s'y lier à l'aide des propriétés requises. Prenons par exemple un gadget représentant une valeur étiquetée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
struct LabeledValue {
    Q_GADGET
    Q_PROPERTY(int value MEMBER value)
    Q_PROPERTY(QString label MEMBER label)
 
public:
    int value;
    QString label;
};


Vous pouvez créer un modèle à partir d'un std::vector comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
std::vector<LabeledValue> data = {
    {1, "One"}, {2, "Two"}, {3, "Three"}
};
auto labeledValues = new QRangeModel(data);


Et dans QML, vous pouvez utiliser les propriétés requises dans le délégué pour vous lier aux rôles du modèle de manière sécurisée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ListView {
    model: modelProvider.labeledValues
 
    delegate: Item {
        required property int value
        required property string label
 
        width: ListView.view.width
        height: 40
 
        Text {
            anchors.centerIn: parent
            text: label + " (" + value + ")"
        }
    }
}


Ce modèle élimine le besoin de gérer manuellement les rôles ou les propriétés de contexte, et fonctionne de manière transparente avec QML compilé. Cela facilite la connexion entre le C++ moderne et QML, sans aucune implémentation standard de QAbstractItemModel.

Liaisons bidirectionnelles avec Synchronizer

Les liaisons bidirectionnelles ou multi-synchronisation ont souvent été demandées. Dans Qt 6.10, l'élément Synchronizer a été introduit. Avec un Synchronizer, vous pouvez vous assurer que plusieurs propriétés conservent la même valeur dans la mesure du possible, sans pour autant rompre les liaisons dans l'une ou l'autre. Avant Synchronizer, vous deviez généralement disposer d'une liaison et d'un gestionnaire de signaux pour synchroniser un contrôle avec une valeur de modèle, et cela ne fonctionnait que pour les contrôles implémentés en C++.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
delegate: Row {
    id: delegate
    required property int value
    required property string label
 
    SpinBox {
        value: delegate.value
 
        // Extra signal, only for input
        onValueModified: delegate.value = value
    }
 
    Text { text: delegate.label }
}


Avec Synchronizer, vous n'avez besoin que d'un seul élément pour effectuer la synchronisation, cela fonctionne pour n'importe quel nombre de propriétés à synchroniser, et les cibles peuvent être implémentées en C++ ou QML.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
delegate: Row {
    id: delegate
    required property int value
    required property string label
 
    SpinBox {
        Synchronizer on value {
            property alias source: delegate.value
        }
    }
 
    Text { text: delegate.label }
}


Améliorations pour les développeurs Android

Qt 6.10 comprend un certain nombre d'améliorations qui rendent la plate-forme Android plus conviviale pour les développeurs, ajoute la prise en charge des dernières versions d'Android et facilite la création d'une bonne première impression pour votre application.

Prise en charge d'Android 15 et 16

Avec Qt 6.10, nous prenons officiellement en charge Android 15 et 16. Cela inclut des mises à jour du système de compilation et la prise en charge des pages 16K, ce qui vous permet de cibler les appareils Android les plus récents. Cette prise en charge garantit que les applications Qt restent stables et performantes dans l'écosystème Android en constante évolution.

Qt Jenny 1.0

Qt Jenny 1.0 est un nouvel outil qui simplifie l'intégration des API Java Android dans les applications Qt. Il agit comme un générateur de code pour le code JNI glue, permettant aux développeurs de générer automatiquement des API Qt C++ à partir de classes Java annotées. Qt Jenny se compose d'un compilateur et d'un processeur d'annotation, permettant d'accéder à des services natifs Android tels que BatteryManager, PowerManager et AudioManager à partir du code Qt. Le code généré utilise QJniObject et prend également en charge les notifications, qui sont assez complexes à mettre en œuvre via JNI. Qt Jenny est disponible via Maven Central, et des exemples sont inclus dans Qt Creator et la documentation en ligne pour aider les développeurs à démarrer rapidement.

Amélioration de la gestion de l'écran de démarrage

Depuis qu'Android 12 a introduit une API d'écran de démarrage par défaut, les applications Qt devaient veiller à ne pas afficher deux écrans de démarrage : celui d'Android, puis celui de Qt. Avec Qt 6.10, nous fournissons des exemples et des conseils pour créer une transition fluide entre l'écran de démarrage Android et celui de Qt. Cela implique d'utiliser une SplashActivity dédiée, de personnaliser les thèmes pour la translucidité et de ne lancer l'activité Qt qu'une fois Android prêt. Il en résulte une expérience de démarrage plus soignée et plus cohérente, en particulier pour les applications multiplateformes.

macOS et iOS 26

Qt 6.10 est la première version mineure de Qt depuis que macOS 26 « Tahoe » est sorti de sa phase bêta il y a quelques semaines. Au cours des derniers mois, depuis l'annonce en juin, nous avons travaillé pour nous assurer que les applications Qt s'affichent correctement sur les dernières versions de macOS et iOS.

Le nouveau système de conception Liquid Glass et les modifications apportées à l'architecture de rendu sous-jacente sur macOS nous ont posé quelques défis, et nous sommes heureux d'ajouter macOS 26 à la liste des plateformes entièrement prises en charge par Qt. De nombreuses améliorations seront également intégrées dans les prochaines versions correctives des branches LTS, et macOS 26 sera également pris en charge par les versions Qt 6.8 et Qt 6.5.
Source : Annonce de Qt 6.10

Et vous ?

Pensez-vous que ces améliorations sont crédibles ou pertinentes ?
Quel est votre avis sur cette mise à jour ?

Voir aussi :

Qt 6.9 est maintenant disponible avec un rendu des emoji conforme aux derniers standards, ainsi que des améliorations pour répondre aux exigences modernes d'OAuth2

Qt 6.8 LTS prend en charge de nouvelles plateformes de bureau, mobiles et embarquées. Cette version réduit la consommation mémoire de 30 % et apporte un module pour la réalité augmentée et virtuelle