Sur cette page

Q3DScatter Class

La classe Q3DScatter propose des méthodes permettant de générer des graphiques de dispersion en 3D. En savoir plus...

En-tête : #include <Q3DScatter>
CMake : find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake : QT += datavisualization
Depuis : QtDataVisualization 1.0
Hérite de : QAbstract3DGraph
Statut : Obsolète

Cette classe est obsolète. Nous déconseillons fortement de l'utiliser dans du nouveau code.

Propriétés

Fonctions publiques

Q3DScatter(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
virtual ~Q3DScatter()
void addAxis(QValue3DAxis *axis)
void addSeries(QScatter3DSeries *series)
QList<QValue3DAxis *> axes() const
QValue3DAxis *axisX() const
QValue3DAxis *axisY() const
QValue3DAxis *axisZ() const
void releaseAxis(QValue3DAxis *axis)
void removeSeries(QScatter3DSeries *series)
QScatter3DSeries *selectedSeries() const
QList<QScatter3DSeries *> seriesList() const
void setAxisX(QValue3DAxis *axis)
void setAxisY(QValue3DAxis *axis)
void setAxisZ(QValue3DAxis *axis)

Signaux

void axisXChanged(QValue3DAxis *axis)
void axisYChanged(QValue3DAxis *axis)
void axisZChanged(QValue3DAxis *axis)
void selectedSeriesChanged(QScatter3DSeries *series)

Description détaillée

Cette classe permet aux développeurs d'afficher des graphiques en nuage de points en 3D et de les visualiser en faisant pivoter librement la scène. La rotation s'effectue en maintenant le bouton droit de la souris enfoncé et en déplaçant la souris. Le zoom s'effectue à l'aide de la molette de la souris. La sélection, si elle est activée, s'effectue à l'aide du bouton gauche de la souris. La scène peut être réinitialisée à la vue par défaut de la caméra en cliquant sur la molette de la souris. Sur les appareils tactiles, la rotation s’effectue par « tap-and-move », la sélection par « tap-and-hold » et le zoom par « pinch ».

Si aucun axe n’est explicitement défini dans Q3DScatter, des axes par défaut temporaires 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 explicitement défini pour une orientation donnée, l’axe par défaut correspondant à cette orientation est supprimé.

Q3DScatter prend en charge l’affichage simultané de plusieurs séries.

Comment créer un graphique Q3DScatter minimal

Commencez par créer un objet Q3DScatter. Comme, dans cet exemple, le graphique s’affiche dans une fenêtre de niveau supérieur, il faut désactiver l’indicateur « Qt::FramelessWindowHint », qui est activé par défaut :

Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);

Q3DScatter est désormais prêt à recevoir les données à afficher. Ajoutez une série composée de 3 éléments d’ QVector3D:

QScatter3DSeries *series = new QScatter3DSeries;
QScatterDataArray data;
data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
series->dataProxy()->addItems(data);
scatter.addSeries(series);

Enfin, vous devrez le rendre visible :

scatter.show();

Voici le code complet nécessaire pour créer et afficher ce graphique :

#include <QtDataVisualization>

int main(int argc, char **argv)
{
    qputenv("QSG_RHI_BACKEND", "opengl");
    QGuiApplication app(argc, argv);

    Q3DScatter scatter;
    scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);
    QScatter3DSeries *series = new QScatter3DSeries;
    QScatterDataArray data;
    data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
    series->dataProxy()->addItems(data);
    scatter.addSeries(series);
    scatter.show();

    return app.exec();
}

Et voici le résultat obtenu avec ces quelques lignes de code :

Graphique de dispersion 3D minimaliste comportant trois sphères vertes disposées dans une grille filaire

La scène peut être pivotée, agrandie, et un élément peut être sélectionné pour afficher sa position, mais aucune autre interaction n’est incluse dans cet exemple de code minimal. Vous pouvez en apprendre davantage en vous familiarisant avec les exemples fournis, comme le graphique de dispersion.

Voir également Q3DBars, Q3DSurface et Qt Data Visualization C++ Classes.

Documentation sur les propriétés

axisX : QValue3DAxis*

Cette propriété définit l'axe x actif.

Fonctions d'accès :

QValue3DAxis *axisX() const
void setAxisX(QValue3DAxis *axis)

Signal de notification :

void axisXChanged(QValue3DAxis *axis)

axisY : QValue3DAxis*

Cette propriété définit l'axe Y actif.

Fonctions d'accès :

QValue3DAxis *axisY() const
void setAxisY(QValue3DAxis *axis)

Signal de notification :

void axisYChanged(QValue3DAxis *axis)

axisZ : QValue3DAxis*

Cette propriété définit l'axe Z actif.

Fonctions d'accès :

QValue3DAxis *axisZ() const
void setAxisZ(QValue3DAxis *axis)

Signal de notification :

void axisZChanged(QValue3DAxis *axis)

[read-only] selectedSeries : QScatter3DSeries*

Cette propriété contient la série sélectionnée ou la valeur NULL.

Fonctions d'accès :

QScatter3DSeries *selectedSeries() const

Signal de notification :

void selectedSeriesChanged(QScatter3DSeries *series)

Documentation des fonctions membres

[explicit] Q3DScatter::Q3DScatter(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)

Crée un nouveau graphique de dispersion en 3D avec, en option, une fenêtre d'parent s et une surface d'format.

[virtual noexcept] Q3DScatter::~Q3DScatter()

Supprime le graphique de dispersion en 3D.

void Q3DScatter::addAxis(QValue3DAxis *axis)

axis Ajoute l'axis au graphe. Les axes ajoutés via addAxis ne sont pas encore pris en compte ; addAxis sert simplement à attribuer la propriété de l' au graphe. L'axis ne doit pas être nulle ni avoir été ajoutée à un autre graphe.

Voir également releaseAxis(), setAxisX(), setAxisY() et setAxisZ().

void Q3DScatter::addSeries(QScatter3DSeries *series)

Ajoute la série « series » au graphique. Un graphique peut contenir plusieurs séries, mais ne dispose que d’un seul jeu d’axes. Si la série nouvellement ajoutée comporte un élément sélectionné, celui-ci sera mis en surbrillance et toute sélection existante sera désélectionnée. Une seule série ajoutée peut faire l’objet d’une sélection active.

Voir également QAbstract3DGraph::hasSeries().

QList<QValue3DAxis *> Q3DScatter::axes() const

Renvoie la liste de tous les axes ajoutés.

Voir aussi addAxis().

QValue3DAxis *Q3DScatter::axisZ() const

Renvoie l'axe Z utilisé.

Remarque : fonctiongetter pour la propriété axisZ.

Voir aussi setAxisZ().

void Q3DScatter::releaseAxis(QValue3DAxis *axis)

Restitue la propriété de l’ axis à l’appelant, s’il est ajouté à ce graphe. Si l’ axis restitué est en cours d’utilisation, un nouvel axe par défaut sera créé et activé.

Si l’axe par défaut est libéré puis rajouté ultérieurement, il se comporte comme n’importe quel autre axe.

Voir également addAxis(), setAxisX(), setAxisY() et setAxisZ().

void Q3DScatter::removeSeries(QScatter3DSeries *series)

Supprime l'series e du graphe.

Voir aussi QAbstract3DGraph::hasSeries().

QList<QScatter3DSeries *> Q3DScatter::seriesList() const

Renvoie la liste des séries ajoutées à ce graphique.

Voir aussi QAbstract3DGraph::hasSeries().

void Q3DScatter::setAxisX(QValue3DAxis *axis)

Définit ` axis ` comme axe x actif. Appelle implicitement la méthode ` addAxis()` pour transférer la propriété de l'axe à ce graphique.

Si axis est nul, un axe temporaire par défaut, sans étiquettes et dont la plage s'ajuste automatiquement, est créé. Cet axe temporaire est détruit si un autre axe est explicitement défini avec la même orientation.

Remarque : fonctionde définition de la propriété axisX.

Voir également axisX(), addAxis() et releaseAxis().

void Q3DScatter::setAxisY(QValue3DAxis *axis)

Définit ` axis ` comme axe Y actif. Appelle implicitement la méthode ` addAxis()` pour transférer la propriété de l'axe à ce graphique.

Si axis est nul, un axe temporaire par défaut, sans étiquettes et dont la plage s’ajuste automatiquement, est créé. Cet axe temporaire est détruit si un autre axe est explicitement défini avec la même orientation.

Remarque : fonction de définition (setter ) de la propriété axisY.

Voir également axisY(), addAxis() et releaseAxis().

void Q3DScatter::setAxisZ(QValue3DAxis *axis)

Définit ` axis ` comme axe Z actif. Appelle implicitement la méthode ` addAxis()` pour transférer la propriété de l'axe à ce graphique.

Si axis est nul, un axe temporaire par défaut, sans étiquettes et dont la plage s'ajuste automatiquement, est créé. Cet axe temporaire est détruit si un autre axe est explicitement défini avec la même orientation.

Remarque : fonctionde définition pour la propriété axisZ.

Voir également axisZ(), addAxis() et releaseAxis().

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