Sur cette page

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

Montre quatre formes de base proposées par Qt 3D et crée un maillage pour chacune d'entre elles.

Capture d'écran montrant quatre objets 3D : un tore, un cylindre, un cube et une sphère.

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

Exécution de l'exemple

Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.

Mise en place d'un maillage de tores

À titre d'exemple, nous allons voir comment configurer un maillage de tore. Tout d'abord, nous instancions le site QTorusMesh, puis nous définissons les paramètres spécifiques du maillage, qui pour le tore sont le rayon, le rayon mineur et 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 et 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 un arbre d'entités, ce que nous faisons en créant un QEntity avec une entité parent et en y ajoutant les composants de maillage, de matériau et de transformation 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 a un parent ou non. En d'autres termes, si elle fait partie d'un arbre d'entités ou non.

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

Exemple de projet @ 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.