Sur cette page

Qt 3D: Exemple de formes de base en C++

Présente quatre formes de base proposées par Qt 3D et configure un maillage pour chacune d'entre elles.

Capture d'écran montrant quatre objets en 3D : un tore, un cylindre, un parallélépipède rectangle et une sphère

L’exemple «Formes de base » présente quatre formes de base proposées par Qt 3D: un tore, un cylindre, un cube et une sphère. Il montre également comment intégrer une scène Qt 3D dans un widget et la connecter à d’autres widgets.

Exécution de l’exemple

Vous pouvez exécuter l’exemple à partir de :

Configuration d’un maillage toroïdal

À titre d’exemple, nous allons voir comment configurer un maillage torique. Tout d’abord, nous instancions l’ QTorusMesh, puis nous définissons les paramètres spécifiques au maillage, qui, pour un tore, sont le rayon, le rayon mineur, ainsi que le nombre d’anneaux et de tranches.

m_torus = new Qt3DExtras::QTorusMesh();
m_torus->setRadius(1.0f);
m_torus->setMinorRadius(0.4f);
m_torus->setRings(100);
m_torus->setSlices(20);

La taille et la position du tore peuvent être ajustées à l’aide de composants de transformation. Nous créons des composants d’échelle, de translation et de rotation, puis nous les ajoutons au composant « QTransform ».

Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform();
torusTransform->setScale(2.0f);
torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 1.0f, 0.0f), 25.0f));
torusTransform->setTranslation(QVector3D(5.0f, 4.0f, 0.0f));

Pour modifier la couleur diffuse du maillage, nous créons un « QPhongMaterial » et définissons sa couleur diffuse.

Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial();
torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));

La dernière étape consiste à ajouter le tore dans une arborescence d’entités ; pour cela, nous créons une entité « QEntity » avec une entité parente, puis y ajoutons les composants « mesh », « material » et « transform » créés précédemment.

m_torusEntity = new Qt3DCore::QEntity(m_rootEntity);
m_torusEntity->addComponent(m_torus);
m_torusEntity->addComponent(torusMaterial);
m_torusEntity->addComponent(torusTransform);

Nous pouvons contrôler la visibilité de l’entité en définissant si elle possède ou non un parent. Autrement dit, si elle fait partie ou non d’un arbre d’entités.

void SceneModifier::enableTorus(bool enabled)
{
    m_torusEntity->setEnabled(enabled);
}

Exemple de projet sur code.qt.io

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