Sur cette page

Qt Graphs Vue d'ensemble de 3D

Le module Qt Graphs permet de développer rapidement des graphiques 3D complexes et dynamiques pour les secteurs exigeants en termes d'analyse, tels que la recherche universitaire et la médecine. Qt Graphs fournit des barres, des diagrammes de dispersion et des graphiques de surface en 3D. La combinaison de l'interaction avec l'utilisateur et des graphiques en 3D en temps réel permet de créer des interfaces utilisateur qui utilisent l'espace de manière efficace. Le passage d'une présentation en 3D à une présentation en 2D permet d'exploiter pleinement la valeur de la 3D dans la visualisation des données.

L'aspect et la convivialité des graphiques peuvent être personnalisés en utilisant les thèmes prédéfinis ou en en définissant de nouveaux. En outre, les scènes peuvent être personnalisées en spécifiant les paramètres de la caméra, et les éléments individuels peuvent être personnalisés en utilisant des maillages prédéfinis ou définis par l'utilisateur.

Qt Graphs offre des proxys de données prêts à l'emploi qui peuvent être utilisés pour visualiser des données provenant de modèles d'éléments Qt Visualization et de cartes d'altitude. Chaque type de graphique possède un type de proxy de base, qui accepte les données dans un format adapté à ce graphique. Pour plus d'informations, voir Qt Graphs Data Handling with 3D.

Les utilisateurs finaux peuvent interagir avec les données présentées par les graphiques de plusieurs manières, notamment en faisant pivoter les graphiques, en zoomant sur les données, en sélectionnant des éléments et en visualisant des tranches 2D des données 3D pour une meilleure lisibilité. Pour plus d'informations, voir Qt Graphs Interagir avec des 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 widget pour ses propres sous-classes, Q3DBarsWidgetItem, Q3DScatterWidgetItem, et Q3DSurfaceWidgetItem qui mettent en œuvre les différents types de graphiques : barres, dispersion et surface. Le type de graphique détermine la manière dont les données sont présentées.

Tout le rendu se fait dans QQuickGraphsItem, qui hérite de QQuick3DViewport, qui à son tour offre View3D en utilisant QtQuick3D. Il possède ses propres sous-classes pour Bars3D, Scatter3D et Surface3D.

Graphiques à barres en 3D

Les diagrammes à barres en 3D présentent les données sous forme de barres en 3D regroupées par catégorie. La classe Q3DGraphsWidgetItem est utilisée pour créer un graphique. Les classes QBar3DSeries et QBarDataProxy sont utilisées pour définir les données du graphique et pour contrôler les propriétés visuelles du graphique, telles que le mode d'affichage et l'ombrage. En QML, les types correspondants sont Bars3D, Bar3DSeries, et BarDataProxy.

Pour plus d'informations, voir How to construct a minimal Q3DBarsWidgetItem graph et les exemples de graphiques à barres simples.

Graphiques de dispersion en 3D

Les graphiques de dispersion en 3D présentent les données sous la forme d'une collection de points ou d'une spline. La classe Q3DScatterWidgetItem est utilisée pour créer un graphique. Les classes QScatter3DSeries ou QSpline3DSeries et QScatterDataProxy sont utilisées pour définir les données du graphique et pour contrôler les propriétés visuelles du graphique. En QML, les types correspondants sont Scatter3D, Scatter3DSeries, Spline3DSeries, et ScatterDataProxy.

Pour plus d'informations, voir How to construct a minimal Q3DScatterWidgetItem graph et les exemples de graphiques de dispersion simples.

Graphiques de surface en 3D

Les graphiques de surface en 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 sont utilisées pour définir les données du graphique et pour contrôler les propriétés visuelles du graphique. En QML, les types correspondants sont Surface3D, Surface3DSeries, et SurfaceDataProxy.

Pour plus d'informations, voir les exemples de How to construct a minimal Q3DSurfaceWidgetItem graph, Graph Gallery et Surface Graph Gallery.

Utilisation d'OpenGL ES pour le rendu des données

Qt Graphs est basé sur QtQuick3D, ce qui signifie que Qt Graphs utilise le backend natif de la plateforme cible pour le rendu. Cependant, si OpenGL ES2 finit par être utilisé dans des cibles qui ne supportent rien de supérieur, comme OpenGL ES3 ou Vulkan, les fonctionnalités suivantes ne sont pas supportées :

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 pendant le rendu normal de l'élément 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 changement de mode de rendu est une question de performance par rapport à la qualité.

Qt Quick utilise un graphique 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. Les 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 et un nombre de segments et de sous-segments pour diviser la plage. Par défaut, des étiquettes sont dessinées entre chaque segment. Des lignes de quadrillage sont tracées par défaut entre chaque segment et chaque sous-segment. L'axe des valeurs est implémenté à l'aide de la classe QValue3DAxis ou du type QML Value3DAxis.

L'axe des catégories a des plages nommées et des largeurs de plage réglables. 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. Des étiquettes sont dessinées par défaut sur les positions des catégories, si elles sont fournies. Les lignes de la grille sont tracées entre les catégories par défaut. Un axe de catégorie est mis en œuvre à l'aide de la classe QCategory3DAxis ou du type QML Category3DAxis.

Si aucun axe n'est défini explicitement pour un graphique, des axes temporaires par défaut sans étiquette 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 pour cette orientation est détruit.

Tous les types de graphiques permettent d'afficher plusieurs séries simultanément. Toutes les séries ne doivent pas nécessairement contenir le même nombre de lignes et de colonnes. Les étiquettes des lignes et des colonnes proviennent de la première série ajoutée, à moins qu'elles ne soient explicitement définies pour les axes des lignes et des colonnes.

Les formateurs d'axes peuvent être utilisés pour personnaliser les lignes et les étiquettes de la grille des axes de valeurs. La classe QValue3DAxisFormatter et le type QML Value3DAxisFormatter fournissent des règles de formatage pour un axe 3D linéaire. La classe QLogValue3DAxisFormatter et le type QML LogValue3DAxisFormatter fournissent des règles de formatage pour un axe 3D à valeur logarithmique.

Les axes horizontaux polaires peuvent être utilisés pour les graphiques de surface et de dispersion en définissant la propriété polar. Il est également possible de l'utiliser pour les barres, mais un avertissement sera alors émis et ignoré.

Personnalisation des scènes 3D

Comme Qt Graphs est construit au-dessus de QtQuick3D, il est possible d'intégrer des scènes QtQuick3D dans des scènes Qt Graphs. Pour plus d'informations, voir Qt Graphs Integration with 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 dispersion. Le type de maillage détermine l'aspect d'une barre ou d'un élément de dispersion sur un graphique. Vous pouvez également spécifier une géométrie personnalisée en tant que fichier de maillage. Pour plus d'informations, voir QAbstract3DSeries::userDefinedMesh(). Pour plus de variété, un quaternion peut être défini pour la rotation du maillage.

Outre la personnalisation d'éléments individuels, vous pouvez utiliser la classe QCustom3DItem ou le type QML Custom3DItem pour ajouter des éléments personnalisés aux graphiques. Les éléments ont un maillage, une position, une échelle et une rotation personnalisés, ainsi qu'une texture facultative.

Utilisez la classe QCustom3DVolume et le type QML Custom3DVolume pour créer des objets en volume à ajouter à un graphique. Un objet à rendu volumique est une boîte dotée 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 implémentent 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 met en œuvre des gestionnaires d'entrée par défaut pour des actions typiques telles que la sélection, la rotation et le zoom. Pour mettre en œuvre des gestionnaires d'entrée personnalisés à la place des gestionnaires par défaut, remplacez 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.