Sur cette page

QCustom3DItem Class

La classe QCustom3DItem ajoute un élément personnalisé à un graphique. Plus d'informations...

En-tête : #include <QCustom3DItem>
CMake : find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake : QT += graphs
En QML : Custom3DItem
Hérite : QObject
Héritée par :

QCustom3DLabel et QCustom3DVolume

Propriétés

Fonctions publiques

QCustom3DItem(QObject *parent = nullptr)
QCustom3DItem(const QString &meshFile, QVector3D position, QVector3D scaling, const QQuaternion &rotation, const QImage &texture, QObject *parent = nullptr)
virtual ~QCustom3DItem() override
bool isPositionAbsolute() const
bool isRotationAbsolute() const
bool isScalingAbsolute() const
bool isShadowCasting() const
bool isVisible() const
QString meshFile() const
QVector3D position() const
QQuaternion rotation()
QVector3D scaling() const
void setMeshFile(const QString &meshFile)
void setPosition(QVector3D position)
void setPositionAbsolute(bool positionAbsolute)
void setRotation(const QQuaternion &rotation)
void setRotationAbsolute(bool rotationAbsolute)
void setRotationAxisAndAngle(QVector3D axis, float angle)
void setScaling(QVector3D scaling)
void setScalingAbsolute(bool scalingAbsolute)
void setShadowCasting(bool enabled)
void setTextureFile(const QString &textureFile)
void setTextureImage(const QImage &textureImage)
void setVisible(bool visible)
QString textureFile() const

Signaux

void meshFileChanged(const QString &meshFile)
void positionAbsoluteChanged(bool positionAbsolute)
void positionChanged(QVector3D position)
void rotationAbsoluteChanged(bool newRotationAbsolute)
void rotationChanged(const QQuaternion &rotation)
void scalingAbsoluteChanged(bool scalingAbsolute)
void scalingChanged(QVector3D scaling)
void shadowCastingChanged(bool shadowCasting)
void textureFileChanged(const QString &textureFile)
void visibleChanged(bool visible)

Description détaillée

Un élément personnalisé possède un maillage personnalisé, une position, une mise à l'échelle, une rotation et une texture optionnelle.

Voir également Q3DGraphsWidgetItem::addCustomItem().

Documentation sur les propriétés

meshFile : QString

Cette propriété contient le nom du fichier de maillage de l'élément.

L'élément contenu dans le fichier doit être au format mesh. Les autres types peuvent être convertis par l'outil d'importation d'actifs de Balsam. Il est recommandé d'inclure les sommets, les normales et les UV dans les fichiers de maillage.

Fonctions d'accès :

QString meshFile() const
void setMeshFile(const QString &meshFile)

Signal de notification :

void meshFileChanged(const QString &meshFile)

position : QVector3D

Cette propriété contient la position de l'élément sous forme de QVector3D.

La valeur par défaut est QVector3D(0.0, 0.0, 0.0).

La position de l'élément est spécifiée soit en coordonnées de données, soit en coordonnées absolues, en fonction de la propriété positionAbsolute. Lors de l'utilisation de coordonnées absolues, les valeurs comprises entre -1.0...1.0 se situent à l'intérieur des plages d'axes.

Remarque : les éléments positionnés en dehors de toute plage d'axes ne sont pas rendus si positionAbsolute est false, sauf s'il s'agit d'un élément QCustom3DVolume qui serait partiellement visible et que scalingAbsolute est également false. Dans ce cas, la partie visible du volume sera rendue.

Fonctions d'accès :

QVector3D position() const
void setPosition(QVector3D position)

Signal de notification :

void positionChanged(QVector3D position)

Voir aussi positionAbsolute.

positionAbsolute : bool

Cette propriété indique si la position de l'élément doit être traitée en coordonnées de données ou en coordonnées absolues.

La valeur par défaut est false. Les éléments dont les coordonnées sont absolues sont toujours rendus, tandis que les éléments dont les coordonnées sont des données ne sont rendus que s'ils se situent dans les plages de l'axe.

Fonctions d'accès :

bool isPositionAbsolute() const
void setPositionAbsolute(bool positionAbsolute)

Signal du notificateur :

void positionAbsoluteChanged(bool positionAbsolute)

Voir également position.

rotation : QQuaternion

Cette propriété contient la rotation de l'article sous forme de QQuaternion.

La valeur par défaut est QQuaternion(0.0, 0.0, 0.0, 0.0).

Fonctions d'accès :

QQuaternion rotation()
void setRotation(const QQuaternion &rotation)

Signal de notification :

void rotationChanged(const QQuaternion &rotation)

[since 6.11] rotationAbsolute : bool

Cette propriété indique si la rotation de l'élément doit être traitée en coordonnées d'axe de données ou en coordonnées absolues.

Définit si la rotation de l'élément doit être gérée en valeurs de données ou en valeurs absolues. La valeur par défaut est true. Les éléments avec une rotation absolue seront tournés avec les coordonnées par défaut, quel que soit l'axe. Les éléments dont la rotation est basée sur des données seront tournés en fonction des coordonnées de l'axe.

Cette propriété a été introduite dans Qt 6.11.

Fonctions d'accès :

bool isRotationAbsolute() const
void setRotationAbsolute(bool rotationAbsolute)

Signal Notifier :

void rotationAbsoluteChanged(bool newRotationAbsolute)

Voir aussi rotation.

scaling : QVector3D

Cette propriété contient l'échelle de l'article sous forme de QVector3D.

La valeur par défaut est QVector3D(0.1, 0.1, 0.1).

La mise à l'échelle de l'élément se fait soit en valeurs de données, soit en valeurs absolues, en fonction de la propriété scalingAbsolute. Le vecteur par défaut interprété en valeurs absolues définit l'élément à 10% de la hauteur du graphique, à condition que le maillage de l'élément soit normalisé et que les rapports d'aspect du graphique n'aient pas été modifiés par rapport aux valeurs par défaut.

Note : Dans Qt 6.8, les modèles étaient incorrectement supposés être mis à l'échelle à une taille de 1 (-0.5...0.5) par défaut, alors qu'ils sont en réalité mis à l'échelle à une taille de 2 (-1...1). À cause de cela, tous les éléments personnalisés à partir de Qt 6.9 sont deux fois plus grands que dans Qt 6.8.

Fonctions d'accès :

QVector3D scaling() const
void setScaling(QVector3D scaling)

Signal Notifier :

void scalingChanged(QVector3D scaling)

Voir aussi scalingAbsolute.

scalingAbsolute : bool

Cette propriété indique si la mise à l'échelle des éléments doit être traitée en valeurs de données ou en valeurs absolues.

La valeur par défaut est true.

Les éléments dont la mise à l'échelle est absolue seront rendus à la même taille, quelles que soient les plages des axes. Les éléments avec une mise à l'échelle des données changeront leur taille apparente en fonction des plages de l'axe. Si positionAbsolute est true, cette propriété est ignorée et la mise à l'échelle est interprétée comme une valeur absolue. Si l'élément a une rotation, la mise à l'échelle des données est calculée sur l'élément non tourné. De même, pour les éléments QCustom3DVolume, l'écrêtage de la plage est calculé sur l'élément non tourné.

Remarque : seule la mise à l'échelle absolue est prise en charge pour les éléments QCustom3DLabel ou pour les éléments personnalisés utilisés dans les graphiques polar.

Remarque : le maillage de l'élément personnalisé doit être normalisé en fonction de l'intervalle [-1 ,1], sinon la mise à l'échelle des données ne sera pas précise.

Fonctions d'accès :

bool isScalingAbsolute() const
void setScalingAbsolute(bool scalingAbsolute)

Signal de notification :

void scalingAbsoluteChanged(bool scalingAbsolute)

Voir également scaling et positionAbsolute.

shadowCasting : bool

Cette propriété indique si la projection d'ombres est activée pour l'élément.

La valeur par défaut est true. Si false, l'élément ne projette pas d'ombres, quelle que soit la Q3DGraphsWidgetItem::ShadowQuality.

Fonctions d'accès :

bool isShadowCasting() const
void setShadowCasting(bool enabled)

Signal de notification :

void shadowCastingChanged(bool shadowCasting)

textureFile : QString

Cette propriété contient le nom du fichier de texture de l'élément.

Si cette propriété et l'image de texture ne sont pas définies, une texture gris uni sera utilisée.

Remarque : pour économiser de la mémoire, l'adresse QImage chargée à partir du fichier est effacée après la création d'une texture.

Fonctions d'accès :

QString textureFile() const
void setTextureFile(const QString &textureFile)

Signal de notification :

void textureFileChanged(const QString &textureFile)

visible : bool

Cette propriété indique la visibilité de l'élément.

La valeur par défaut est true.

Fonctions d'accès :

bool isVisible() const
void setVisible(bool visible)

Signal du notificateur :

void visibleChanged(bool visible)

Fonction membre Documentation

[explicit] QCustom3DItem::QCustom3DItem(QObject *parent = nullptr)

Construit un objet 3D personnalisé avec l'adresse parent.

[explicit] QCustom3DItem::QCustom3DItem(const QString &meshFile, QVector3D position, QVector3D scaling, const QQuaternion &rotation, const QImage &texture, QObject *parent = nullptr)

Construit un élément 3D personnalisé avec l'image spécifiée meshFile, position, scaling, rotation, texture et l'image optionnelle parent.

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

Supprime l'élément 3D personnalisé.

[invokable] void QCustom3DItem::setRotationAxisAndAngle(QVector3D axis, float angle)

Une fonction de commodité pour construire le quaternion de rotation à partir de axis et angle.

Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.

Voir aussi rotation.

void QCustom3DItem::setTextureImage(const QImage &textureImage)

Définit la valeur de textureImage comme QImage pour l'article. Par défaut, la texture est gris uni.

Remarque : pour économiser de la mémoire, la valeur de QImage est effacée après la création d'une texture.

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