Qt Graphs Présentation de la 3D
Le module Qt Graphs permet de développer des graphiques 3D réactifs, complexes et dynamiques destinés à des secteurs exigeants sur le plan analytique, tels que la recherche universitaire et le secteur médical. Qt Graphs propose des graphiques 3D à barres, en nuages de points et de surface. La combinaison de l’interaction utilisateur et du tracé de graphiques 3D en temps réel permet de créer des interfaces utilisateur qui exploitent efficacement l’espace. La possibilité de basculer entre les affichages 3D et 2D permet de tirer pleinement parti de la 3D pour la visualisation des données.
L'apparence des graphiques peut être personnalisée à l'aide de thèmes prédéfinis ou en en définissant de nouveaux. De plus, les scènes peuvent être personnalisées en spécifiant des paramètres pour la caméra, et les éléments individuels peuvent être personnalisés à l'aide de maillages prédéfinis ou définis par l'utilisateur.
Qt Graphs offre des proxys de données prêts à l’emploi pouvant être utilisés pour visualiser les données issues des modèles d’éléments Qt et des cartes d’altitude. Chaque type de graphique dispose d’un type de proxy de base, qui accepte les données dans un format adapté à ce graphique. Pour plus d’informations, consultez la section « Gestion des données avec 3D » surQt Graphs .
Les utilisateurs finaux peuvent interagir avec les données présentées par les graphiques de plusieurs façons, notamment en faisant pivoter les graphiques, en effectuant des zooms avant et arrière sur les données, en sélectionnant des éléments et en visualisant des coupes 2D des données 3D pour une meilleure lisibilité. Pour plus d’informations, consultez Qt Graphs Interagir avec les données en 3D.
Types de graphiques
Le module Qt Graphs propose les types de graphiques 3D suivants :
La classe ` Q3DGraphsWidgetItem ` fournit une API de widgets pour ses propres sous-classes, ` Q3DBarsWidgetItem`, ` Q3DScatterWidgetItem` et ` Q3DSurfaceWidgetItem `, qui implémentent les différents types de graphiques : à barres, en nuage de points et de surface. Le type de graphique détermine la manière dont les données sont présentées.
Tout le rendu s'effectue dans ` QQuickGraphsItem`, qui hérite de ` QQuick3DViewport`, qui à son tour propose une interface ` View3D ` utilisant ` QtQuick3D`. Elle dispose de ses propres sous-classes pour ` Bars3D`, ` Scatter3D` et ` Surface3D`.
Graphiques à barres 3D
Les graphiques à barres 3D présentent les données sous forme de barres 3D regroupées par catégorie. La classe ` Q3DGraphsWidgetItem ` sert à créer un graphique. Les classes ` QBar3DSeries ` et ` QBarDataProxy ` permettent de définir les données du graphique et de contrôler ses propriétés visuelles, telles que le mode de dessin et l’ombrage. En QML, les types correspondants sont ` Bars3D`, ` Bar3DSeries` et ` BarDataProxy`.

Pour plus d’informations, consultez les exemples « How to construct a minimal Q3DBarsWidgetItem graph » et « Simple Bar Graph ».
Graphiques de dispersion 3D
Les graphiques de nuages de points en 3D présentent les données sous la forme d’un ensemble de points ou d’une spline. La classe Q3DScatterWidgetItem est utilisée pour créer un graphique. Les classes QScatter3DSeries, QSpline3DSeries et QScatterDataProxy permettent de définir les données du graphique et de contrôler ses propriétés visuelles. En QML, les types correspondants sont Scatter3D, Scatter3DSeries, Spline3DSeries et ScatterDataProxy.

Pour plus d’informations, consultez les exemples « How to construct a minimal Q3DScatterWidgetItem graph » et « Simple Scatter Graph ».
Graphiques de surface 3D
Les graphiques de surface 3D présentent les données sous forme de tracés de surface en 3D. La classe ` Q3DSurfaceWidgetItem ` est utilisée pour créer un graphique. Les classes ` QSurface3DSeries ` et ` QSurfaceDataProxy ` permettent de définir les données du graphique et de contrôler ses propriétés visuelles. En QML, les types correspondants sont ` Surface3D`, ` Surface3DSeries` et ` SurfaceDataProxy`.

Pour plus d’informations, consultez les exemples disponibles sur How to construct a minimal Q3DSurfaceWidgetItem graph, dans la galerie de graphiques et dans la galerie de graphiques de surface.
Utilisation d’OpenGL ES pour le rendu des données
Qt Graphs repose sur QtQuick3D, ce qui signifie qu’ Qt Graphs utilise le backend natif de la plateforme cible pour le rendu. Cependant, si OpenGL ES2 finit par être utilisé sur des cibles ne prenant pas en charge les versions supérieures, telles qu’OpenGL ES3 ou Vulkan, les fonctionnalités suivantes ne sont pas prises en charge :
- les objets volumétriques, car ils utilisent des textures 3D
- L'instanciation : cela signifie que la fonction ` QtGraphs3D::OptimizationHint::Default ` ne fonctionne pas et qu'il faut utiliser ` QtGraphs3D::OptimizationHint::Legacy ` à la place.
Sélection du mode de rendu
En QML, vous pouvez définir la propriété ` GraphsItem3D.RenderingMode ` pour déterminer si le graphique sera rendu directement sur l’arrière-plan de la fenêtre ou sur une surface hors écran qui sera ensuite dessinée lors du rendu normal des éléments QML.
Les modes de rendu en arrière-plan offrent des performances légèrement supérieures à celles du mode de rendu indirect, au prix d’un comportement QML non standard. Par exemple, les graphiques ne prennent pas en charge l’anticrénelage. Par conséquent, le choix du mode de rendu est un compromis entre performances et qualité.
Qt Quick utilise un graphe de scène dédié pour le rendu des données et constitue donc le meilleur choix pour les graphiques.
Axes 3D
Qt Graphs prend en charge les types d’axes suivants :
- Axe des valeurs
- Axe de catégorie
Un axe peut être configuré pour afficher une ligne ou une grille. Ces deux types d’axes sont des spécialisations de la classe ` QAbstract3DAxis ` ou du type QML ` Abstract3DAxis `.
Pour un axe de valeur, vous pouvez définir une plage de valeurs ainsi que le nombre de segments et de sous-segments permettant de diviser cette plage. Par défaut, des étiquettes sont affichées entre chaque segment. Par défaut, des lignes de grille sont tracées entre chaque segment et chaque sous-segment. L’axe de valeur est implémenté à l’aide de la classe ` QValue3DAxis ` ou du type QML ` Value3DAxis `.
Un axe de catégories comporte des plages nommées et des largeurs de plage ajustables. Il est divisé en catégories de taille égale en fonction de la taille de la fenêtre de données définie par la plage de l’axe. Par défaut, des étiquettes sont dessinées aux positions des catégories, si elles sont fournies. Par défaut, des lignes de grille sont dessinées entre les catégories. Un axe de catégories est implémenté à l’aide de la classe ` QCategory3DAxis ` ou du type QML ` Category3DAxis `.
Si aucun axe n’est défini explicitement pour un graphique, des axes par défaut temporaires sans étiquettes sont créés. Ces axes par défaut peuvent être modifiés via les accesseurs d’axe, mais dès qu’un axe est défini explicitement pour une orientation particulière, l’axe par défaut correspondant à cette orientation est supprimé.
Tous les types de graphiques prennent en charge l’affichage simultané de plusieurs séries. Il n’est pas nécessaire que toutes les séries contiennent le même nombre de lignes et de colonnes. Les libellés des lignes et des colonnes sont repris de la première série ajoutée, à moins qu’ils ne soient explicitement définis pour les axes des lignes et des colonnes.
Des formateurs d’axes peuvent être utilisés pour personnaliser les lignes de grille et les étiquettes des axes de valeurs. La classe ` QValue3DAxisFormatter ` et le type QML ` Value3DAxisFormatter ` fournissent des règles de mise en forme pour un axe 3D à valeurs linéaires. La classe ` QLogValue3DAxisFormatter ` et le type QML ` LogValue3DAxisFormatter ` fournissent des règles de mise en forme pour un axe 3D à valeurs logarithmiques.
Les axes horizontaux polaires peuvent être utilisés pour les graphiques de surface et les nuages de points en définissant la propriété ` polar `. Cette propriété peut également être définie pour les graphiques à barres, mais cela générera un avertissement et sera ignoré.
Personnalisation des scènes 3D
Comme Qt Graphs s’appuie sur QtQuick3D, il est possible d’intégrer des scènes QtQuick3D dans des scènes Qt Graphs. Pour plus d’informations, consultez Qt Graphs Intégration avec Qt Quick 3D.
Personnalisation des éléments
Qt Graphs dispose de types de maillage prédéfinis pour les barres et les éléments de nuage de points. Le type de maillage détermine l’apparence d’une barre ou d’un élément de nuage de points sur un graphique. Vous pouvez également spécifier une géométrie personnalisée sous forme de fichier de maillage. Pour plus d’informations, consultez QAbstract3DSeries::userDefinedMesh(). Pour plus de variété, un quaternion peut être défini pour la rotation du maillage.
Outre la personnalisation des éléments individuels, vous pouvez utiliser la classe QCustom3DItem ou le type QML Custom3DItem pour ajouter des éléments personnalisés aux graphiques. Ces éléments disposent d’un maillage, d’une position, d’une échelle et d’une rotation personnalisés, ainsi que d’une texture facultative.
Utilisez la classe ` QCustom3DVolume ` et le type QML ` Custom3DVolume ` pour créer des objets à rendu volumétrique à ajouter à un graphique. Un objet à rendu volumétrique est un parallélépipède muni d’une texture 3D. Trois plans de coupe sont pris en charge pour le volume, un le long de chaque axe principal du volume.
La classe ` QCustom3DLabel ` et le type QML ` Custom3DLabel ` permettent de créer des étiquettes personnalisées avec le texte, la police, la position, la mise à l’échelle et la rotation spécifiés. Le thème actif détermine les couleurs, les bordures et l’arrière-plan des étiquettes.
Gestion des entrées personnalisées
Qt Graphs implémente des gestionnaires d’entrée par défaut pour les actions courantes telles que la sélection, la rotation et le zoom. Pour implémenter des gestionnaires d’entrée personnalisés à la place de ceux par défaut, redéfinissez les signaux d’entrée nécessaires.
onTapped: {
// Disable the default input handler
unsetDefaultTapHandler()
// Implement own custom event handler
console.log("Custom tap event handler")
}© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.