Sur cette page

Q3DScatterWidgetItem Class

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

En-tête : #include <Q3DScatterWidgetItem>
CMake : find_package(Qt6 REQUIRED COMPONENTS GraphsWidgets)
target_link_libraries(mytarget PRIVATE Qt6::GraphsWidgets)
qmake : QT += graphswidgets
Hérite de : Q3DGraphsWidgetItem

Propriétés

Fonctions publiques

Q3DScatterWidgetItem(QObject *parent = nullptr)
virtual ~Q3DScatterWidgetItem() override
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

Emplacements publics

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 de générer des graphiques de dispersion 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, tandis que le zoom s'effectue à l'aide de la molette de la souris. Si cette option est activée, la sélection s'effectue avec le 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 pour Q3DScatterWidgetItem, des axes par défaut temporaires sans étiquette sont créés. Ces axes par défaut peuvent être modifiés via des accesseurs d'axe, mais dès qu'un axe est explicitement défini pour une orientation, l'axe par défaut correspondant à cette orientation est supprimé.

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

Q3DScatterWidgetItem prend en charge la transparence. Cette fonctionnalité vous permet de régler l’opacité des points du nuage de points, en les rendant partiellement transparents, entièrement transparents ou opaques.

Comment créer un graphique Q3DScatterWidgetItem minimal

Commencez par créer un objet `Q3DScatterWidgetItem`. Comme, dans cet exemple, le graphique s’exécute en tant que fenêtre de niveau supérieur, nous devons désactiver le drapeau ` Qt::FramelessWindowHint `, qui est activé par défaut :

QQuickWidget quickWidget;
Q3DScatterWidgetItem scatter;
scatter.setWidget(&quickWidget);
scatter.widget()->setMinimumSize(QSize(256, 256));

Q3DScatterWidgetItem est désormais prêt à recevoir les données à afficher. Ajoutez une série de 3 éléments « QVector3D » :

Remarque : dans la nouvelle relation de série proxy, les données sont stockées dans des séries. Par conséquent, pour que le proxy puisse ajouter, supprimer ou modifier les données, il est indispensable de créer d’abord une série.

QScatter3DSeries series;
QScatterDataArray data;
data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
     << QScatterDataItem(0.0f, -0.3f, 0.2f);
series.dataProxy()->addItems(data);
scatter.addSeries(&series);

Enfin, vous devrez le rendre visible :

scatter.widget()->show();

Le code complet nécessaire pour créer et afficher ce graphique est le suivant :

#include <QtGraphs>
#include <QtGraphsWidgets/q3dscatterwidgetitem.h>
#include <QtWidgets/qapplication.h>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QQuickWidget quickWidget;
    Q3DScatterWidgetItem scatter;
    scatter.setWidget(&quickWidget);
    scatter.widget()->setMinimumSize(QSize(256, 256));
    QScatter3DSeries series;
    QScatterDataArray data;
    data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
         << QScatterDataItem(0.0f, -0.3f, 0.2f);
    series.dataProxy()->addItems(data);
    scatter.addSeries(&series);
    scatter.widget()->show();

    return app.exec();
}

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

Nuage de points en 3D avec des sphères vertes

La scène peut être pivotée, agrandie, et un élément peut être sélectionné pour afficher sa position, mais cet exemple de code minimal ne comporte aucune autre interaction. Vous pouvez en savoir plus en vous familiarisant avec les exemples fournis, comme le « Simple Scatter Graph ».

Voir également Q3DBarsWidgetItem, Q3DSurfaceWidgetItem et Qt Graphs Classes C++ pour la 3D.

Documentation sur les propriétés

axisX : QValue3DAxis*

Cette propriété indique l'axe des x actif.

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.

Fonctions d'accès :

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

Signal de notification :

void axisXChanged(QValue3DAxis *axis)

Voir également addAxis() et releaseAxis().

axisY : QValue3DAxis*

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

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.

Fonctions d’accès :

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

Signal de notification :

void axisYChanged(QValue3DAxis *axis)

Voir également addAxis() et releaseAxis().

axisZ : QValue3DAxis*

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

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.

Fonctions d’accès :

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

Signal de notification :

void axisZChanged(QValue3DAxis *axis)

Voir également addAxis() et releaseAxis().

[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] Q3DScatterWidgetItem::Q3DScatterWidgetItem(QObject *parent = nullptr)

Crée un nouveau graphique de dispersion en 3D avec l'parent, facultative.

[override virtual noexcept] Q3DScatterWidgetItem::~Q3DScatterWidgetItem()

Supprime le graphique de dispersion en 3D.

void Q3DScatterWidgetItem::addAxis(QValue3DAxis *axis)

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

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

void Q3DScatterWidgetItem::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 Q3DGraphsWidgetItem::hasSeries().

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

Renvoie la liste de tous les axes ajoutés.

Voir aussi addAxis().

void Q3DScatterWidgetItem::releaseAxis(QValue3DAxis *axis)

Restitue la propriété de l'axe « axis » à l'appelant, s'il est ajouté à ce graphe. Si l'axe « 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 réintégré ultérieurement, il se comporte comme n’importe quel autre axe.

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

void Q3DScatterWidgetItem::removeSeries(QScatter3DSeries *series)

Supprime l'series e du graphe.

Voir aussi Q3DGraphsWidgetItem::hasSeries().

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

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

Voir également Q3DGraphsWidgetItem::hasSeries().

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