IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Jade Emy

0PARTAGES

4  0 
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.

https://youtu.be/L2HQkTA4pmY

Voici un extrait de l'annonce de Qt 6.10 :

[QUOTE]

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é.


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.


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
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
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
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
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
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
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...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !